如何使用awk命令行打印列并添加标题



我有问题,如果有任何帮助,我将不胜感激。我有一个test1.txt文件,包含以下列:

column1|column2|column3|column4|column5|column6|column7|column8|

然后,我运行以下操作以针对特定列。

cat test1.txt | awk -F "|" '{ print $2, $3, $4, $6, $7}' > teste.csv 

CSV文件在1行中输出结果,如下所示:

column2 column3 column4 column6 column7

但我想要的是类似的东西

header2|header3|header4|header6|header7
column2|column3|column4|column6|column7

你能帮我解决上面的问题吗?还有,在得到正确的结果后,我如何添加标题。

提前感谢

如果问题是列应该用|而不是空格分隔,则必须将输出字段分隔符OFS设置为与输入字段分隔符FS相同的值。

awk -F "|" -v 'OFS=|' '{ print $2, $3, $4, $6, $7}' test1.txt > teste.csv

可以使用BEGIN条件添加打印页眉的命令。在这种情况下,你也可以把分配到OFS那里。

awk -F "|" 'BEGIN { OFS=FS; print "header2|header3|header4|header6|header7" } { print $2, $3, $4, $6, $7}' test1.txt > teste.csv

使用问题中显示的输入,打印

header2|header3|header4|header6|header7
column2|column3|column4|column6|column7

假设您引用了csv(问题中以逗号分隔的值输出(,并且文件列中有样本数据,您可以运行:

awk -F| 'BEGIN { OFS=",";print "COLUMN1"OFS"COLUMN2"OFS"COLUMN3"OFS"COLUMN4"OFS"COLUMN5"OFS"COLUMN6"OFS"COLUMN7"OFS"COLUMN8"OFS } { $1=$1 }1' columns

在BEGIN部分中,将输出设置为,并使用新的OFS打印所需的标题(例如COLUMN1、COLUMN2等(。然后取每一行,将$1设置为$1,在考虑新OFS的情况下对$0进行更改。使用1打印新行。

输出:

COLUMN1,COLUMN2,COLUMN3,COLUMN4,COLUMN5,COLUMN6,COLUMN7,COLUMN8,
column1,column2,column3,column4,column5,column6,column7,column8,

添加标题

awk 'BEGIN {print "Column1|Column2|Column3|Column4|Column5|Column6|Column7|Column8"} {print}' table > test1.txt

要将您想要的列添加到teste.csv 中

cat test1.txt| awk -F '|' '{print $2, $3, $4, $6, $7}' > teste.csv

最新更新