如何在linux中用awk / sed或其他命令删除一些字符串?

时间:2017-05-09 08:45:19

标签: linux bash awk sed

我想问一下,如何在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

3 个答案:

答案 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

假设:您的文件仅包含|分隔的整数值