我有管道分隔文件。我想剥离以子ID的'00'开头的数字,保持其余的数字相同。 例如: Karen Calvert50335491 | 0020380050335491 | ACTIVE | 100 | KINGSPORT | KarenCalvert50335491@charter.net | 8353/3000 | RESIDENTIAL | FiberNode | TENNESSEE | 00:00:00:20:0f:03 | EAST | 423- 343-9250 | HSIPLUS | 1826 HIGHLAND ST | Service1 | MA | 01602
预期o / p -
Karen Calvert50335491 | 20380050335491 | ACTIVE | 100 | KINGSPORT | KarenCalvert50335491@charter.net | 8353/3000 | RESIDENTIAL | FiberNode | TENNESSEE | 00:00:00:20:0f:03 | EAST | 423-343-9250 | HSIPLUS | 1826 HIGHLAND ST | Service1 | MA | 01602
注意:在这个文件中有一些mac地址,也是'00'
的satritng任何帮助表示赞赏。 感谢
答案 0 :(得分:3)
使用sed:
sed 's/^\([^|]*\)|0*\([^|]*\)/\1|\2/' input
通过\1
匹配,捕获并保留^\([^|]*\)
中的第一列,并捕获\2
中的第二列,通过0*\([^|]*\)
跳过前导0。然后,它通过/\1|\2/
将匹配的部分(第1列和第2列)替换为这些列的捕获部分。
答案 1 :(得分:2)
这可能适合你(GNU sed):
sed -r 's/^([^|]*\|)0+/\1/' file
或更一般地说:
sed -r 's/^(([^|]*\|){1})0+/\1/' file
在这种情况下,1
是nth -1
字段
答案 2 :(得分:1)
好悲伤。如果你想操纵第7个字段而不是第二个字段,请尝试使用sed解决方案。只需使用awk:
awk 'BEGIN{FS=OFS="|"} {sub(/^0+/,"",$2);print}' file
如果您想更改第7个字段而不是第2个字段,则只需将2美元更改为7美元。