MyF*_*ame 9 unix linux awk sed
我有一个以下格式的文件:
col1|col2|col3|col4
a|b|c|d
e|f||h
i|j|k|l
Run Code Online (Sandbox Code Playgroud)
我想从标题和数据中删除col3(带分隔符"|").这可以使用awk/sed完成吗?
请注意col3中的数据可能为空(第2行).
输出应该是:
col1|col2|col4
a|b|d
e|f|h
i|j|l
Run Code Online (Sandbox Code Playgroud)
tri*_*eee 18
你可以简单地使用cut.
cut -d'|' -f1-2,4- file
Run Code Online (Sandbox Code Playgroud)
这可能对你有用(GNU sed 或 cut):
sed 's/[^|]*|//3' file
Run Code Online (Sandbox Code Playgroud)
选择:
cut -f3 -d'|' --co file
Run Code Online (Sandbox Code Playgroud)
NB--co是缩写--complement,并且在删除最后一个字段时该剪切也有效。
awk 'BEGIN{FS=OFS="|"}{print $1,$2,$4}' file
Run Code Online (Sandbox Code Playgroud)
应该给你输出。
这是非常基本的 awk 用法。
编辑
你没有提到 70 列...:(
尝试这个:
awk -F'|' '{s="";for(i=1;i<=NF;i++){f=(NF==i)?"":FS;if(i!=3)s=s $i f;}print s}' file
Run Code Online (Sandbox Code Playgroud)