sed - 如何将 10 位电话号码分成两部分

标签 sed ksh

例如,我得到一个电话号码,如 9191234567 ,我怎么能把它分成两部分,第一部分包含三个前导数字 919 ,另一部分包含其余七位数字 1234567 ?之后,我想将这两个部分存储到 ksh 中的两个不同变量中。

我不知道这是否可以用 sed 完成?

最佳答案

你可以试试这个:

echo "9191234567" | sed 's/^\([0-9]\{3\}\)\([0-9]\{7\}\)$/\1 \2/'

要将每个部分存储在单独的变量中,您可以这样做:
phone="9191234567"
part1=$(echo $phone | sed 's/^\([0-9]\{3\}\)[0-9]\{7\}$/\1/')
part2=$(echo $phone | sed 's/^[0-9]\{3\}\([0-9]\{7\}\)$/\1/')

或者更简洁:
read part1 part2 <<< $(echo "9191234567" | sed 's/^\([0-9]\{3\}\)\([0-9]\{7\}\)$/\1 \2/')

关于sed - 如何将 10 位电话号码分成两部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16844708/

相关文章:

perl - 引号和斜杠在多层中仍然存在

linux - 如何在while循环中并行处理多行文件?

vim - 如何删除所有包含少于 n 个项目的行

awk - 文本处理 : sed to work backwards to delete until string

linux - ipcalc 输出和 grep。只想返回二进制输出

macos - ksh 的 vi 模式有时会损坏编辑行 - GitHub 上的新版本修复了该问题

linux - ksh + 比较数字 – 两种方式

bash - 使用 sed 检索和修改文件中的单行

linux - 如何仅在数字和句子之间替换换行符?

bash - 管道中 `$?` 的正确值是多少?