Delete a column from a delimited file in linux

2020-02-12 04:55发布

I have a file in the following format:

col1|col2|col3|col4
a|b|c|d
e|f||h
i|j|k|l

I would like to delete col3 (with the delimiter "|") from the header and the data as well. Can this be done using awk/sed?

Plese NOTE that the data in col3 maybe empty (row 2).

The output should be:

col1|col2|col4
a|b|d
e|f|h
i|j|l

标签: linux unix awk sed
7条回答
够拽才男人
2楼-- · 2020-02-12 05:39

Using cut is the right answer, but if you really want to use awk it's easier than Kent shows:

awk -F'|' 'BEGIN {OFS="|"} {for (n=3; n < NF; ++n) $n = $(n+1); --NF; print}'

Just shuffle the fields after $3 down, then by altering the value of NF you change the number of fields.

查看更多
登录 后发表回答