我想问一下,在linux下如何用命令删除一些字符串?
cat /data/filename.txt
A|2|3|4|5|6|7|8|9|10|0030|12|05/09/17
B|2|3|4|5|6|7|8|9|10|00045|12|05/09/17
C|2|3|4|5|6|7|8|9|10|061|12|05/09/17
和输出:
cat /data/filename.txt
A|2|3|4|5|6|7|8|9|10|30|12|05/09/17
B|2|3|4|5|6|7|8|9|10|45|12|05/09/17
C|2|3|4|5|6|7|8|9|10|61|12|05/09/17
最佳答案
尝试:
awk -F"|" '{sub(/^0+/,"",$11)} 1' OFS="|" Input_file
将字段分隔符设置为 |然后根据您的要求用第 111 个字段的 NULL 替换起始零,提及 1 将打印新编辑的行(如果有任何零被 NULL 替换),将输出字段分隔符设置为 |然后提到Input_file。
编辑:添加第二个解决方案,将 -000 删除到第 11 个字段,如下所示。
awk -F"|" '{sub(/^0+/,"",$11);sub(/-0+/,"-",$11)} 1' OFS="|" Input_file
我在这里做|作为字段分隔符,然后将第 11 个字段中的起始零替换为 NULL,然后将 -0+ 表示从 -0 到所有零也替换为 NULL,然后 1 将打印这些行。将输出字段分隔符设置为 |也是。
关于linux - 如何在 Linux 中使用 awk/sed 或其他命令删除某些字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43865142/