shell 删除第三列,但不删除标题[重复]

ha5z0ras  于 2023-06-24  发布在  Shell
关注(0)|答案(2)|浏览(119)

此问题已在此处有答案

Delete a column from a delimited file in linux(7个回答)
14天前关闭
我想从csv文件中删除第三列

input.csv 
col1|col2|col3|col4 
aaa1|aaa2|aaa|aaa3|aaa4 
bbb1|bbb2|bbb|bbb3|bbb4 
ccc1|ccc2|ccc|ccc3|ccc4

我只想删除第三列的内容,而不删除标题。

output.csv 
col1|col2|col3|col4 
aaa1|aaa2|aaa3|aaa4 
bbb1|bbb2|bbb3|bbb4 
ccc1|ccc2|ccc3|ccc4

我已经尝试了下面的解决方案,但它不起作用。
awk 'BEGIN{FS="\t";OFS="\t"}NR==1{print}NR>1{$1=""; print substr($0,2)}' input.csv > output.csv

fhg3lkii

fhg3lkii1#

像这样的东西

sed '1!s/[^|]*|//3' input.csv >output.csv

在一个文件情况下,可以就地完成

sed -i '1!s/[^|]*|//3' file.csv
lyr7nygr

lyr7nygr2#

使用GNUawk和|作为字段分隔符:

awk 'BEGIN{ FS=OFS="|" } NR>1{ $3=$4; $4=$5; NF-- }1' file.csv

输出:

col1|col2|col3|col4 
aaa1|aaa2|aaa3|aaa4 
bbb1|bbb2|bbb3|bbb4 
ccc1|ccc2|ccc3|ccc4

参见:8 Powerful Awk Built-in Variables – FS, OFS, RS, ORS, NR, NF, FILENAME, FNR

相关问题