我有一个文件,其中包含管道分隔数据,我想删除此字符串" EES"在第17次出现管道后再将数据写回同一文件
以下是我要传递的输入
AMC|FRS|M|123456|01/30/1992|QWERT||WERTYU|OK|USA|74000|1234567|QQ|34567142|11/01/2011|12/31/9999|Y|V3EES|13
以下是我期待
的输出AMC|FRS|M|123456|01/30/1992|QWERT||WERTYU|OK|USA|74000|1234567|QQ|34567142|11/01/2011|12/31/9999|Y|V3|13
感谢帮助,提前致谢!!!
答案 0 :(得分:0)
以下awk应该会帮助你。
awk -F"|" '{sub("EES","",$18)} 1' OFS="|" Input_file > temp_file && mv temp_file Input_file
说明:根据OP的Input_file将字段分隔符设置为|
(管道),然后使用awk的替换实用程序sub,我提到在第18列中将字符串EES替换为NULL。提到1将打印行(编辑/未编辑的第18列)。在此处设置OFS(输出字段分隔符为|(管道))以获取|在输出中,然后提到Input_file。
答案 1 :(得分:0)
使用awk
awk 'BEGIN {FS=OFS="|"} {sub("EES","",$18); print}' file
使用grep
& awk
egrep -o "[A-Z0-9a-z]*" file | awk '{if(NR==18){sub("EES","")}printf("%s|",$0)}'