我想问一下,如何在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
答案 0 :(得分:1)
awk的另一个选择:
awk -F\| -vOFS=\| '{$11+=0}1' file
答案 1 :(得分:1)
尝试:
EVENTS
将字段分隔符设为|然后根据您的要求用第111个字段的NULL替换起始零,提到1将打印新编辑的行(如果有任何零替换为NULL),将输出字段分隔符设置为|然后提到Input_file。
编辑:将第二个解决方案添加到第11个字段中,如下所示。
awk -F"|" '{sub(/^0+/,"",$11)} 1' OFS="|" Input_file
我在这里制作|作为字段分隔符然后用NULL替换第11个字段中的起始零,然后在-0中将-0+表示替换为所有零也为NULL,然后1将打印这些行。将输出字段分隔符设置为|太
答案 2 :(得分:0)
awk 'BEGIN{FS=OFS="|"} {for(i=1;i<=NF;i++)$i=sprintf("%d", $i)}1' /data/filename.txt
2014|2|3|4|5|6|7|8|9|10|11|12
2015|2|3|4|5|6|7|8|9|10|11|12
2016|2|3|4|5|6|7|8|9|10|11|12
假设:您的文件仅包含|
分隔的整数值