shell中 sed或awk 通过分隔符删除相应字段

文件格式如下
aa|bb|cc|dd|
cc|dd|ee|ff|
想把第三个字段删除。变成
aa|bb|dd|
cc|dd|ff|
请问通过sed或者awk如何表达呢?

awk -F"|" '{print $1"|"$2"|"$4"|"}' yourfile

这样就会在终端输出结果,如果要保存,只需把输出重定向到一个文件就行了

awk -F"|" '{print $1"|"$2"|"$4"|"}' yourfile >newfile

 

或者使用sed

sed 's/|[^|]*\(|[^|]*|$\)/\1/' yourfile

如果想直接修改原文件:

sed -i 's/|[^|]*\(|[^|]*|$\)/\1/' yourfile

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-05

如果乐意,cut 也可以完成类似的任务:

cut -d\| -f1-2,4

相似回答