又是我的 SED 问题 :)
因此,与上次一样,我正在努力处理电话号码。这次的问题有点不同。 我目前在我的文本文件中有这种组织:
Areacode: List of phone numbers:
4444 NUM:111111 NUM:2222222 NUM:33333333
5555 NUM:1111111 NUM:2222 NUM:3333333 NUM:44444444 NUM:5555555
现在,每个区号都可以有未知号码,而且电话号码的长度也不固定。 我想知道的是,我怎样才能将区号和电话号码组合起来,看起来像这样:
4444-111111, 4444-2222222, 4444-33333333
我的第一个想法是在每个电话号码前再次添加一个换行符,并将这些部分与正则表达式匹配,然后将第一个记住的项目添加到第二个,然后将第一个添加到第三个:
\1-\2, \1-\3, etc
当然,因为 sed 只能记住 9 个参数,而且一行中可以有超过 10 个数字,所以这是行不通的。此外,电话号码的非固定列表也使这成为不可能。 我再次主要关注 SED 选项,因为我一直在努力精通它 - 但当然欢迎使用其他工具提供更高效的解决方案!
最佳答案
$ cat input.txt | sed '1d;s/NUM:/ /g' | awk '{for(i=2;i<=NF;i++)printf("%s-%s%s", $1, $i, i==NF?"\n":",")}'
4444-111111,4444-2222222,4444-33333333
5555-1111111,5555-2222,5555-3333333,5555-44444444,5555-5555555
关于regex - SED:将现有模式插入同一行的其他几个地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9815933/