[英]How to print a column using awk command line and add header
我有問題,希望得到任何幫助。 我有包含以下列的 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
你能幫我解決上面的問題嗎 - 還有我如何在得到正確的結果后添加標題。
提前致謝
如果問題是列應該用|
分隔而不是空格,您必須將 output 字段分隔符OFS
設置為與輸入字段分隔符FS
相同的值。
awk -F "|" -v 'OFS=|' '{ print $2, $3, $4, $6, $7}' test1.txt > teste.csv
您可以使用BEGIN
條件添加用於打印 header 的命令。在這種情況下,您也可以將 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(問題中的逗號分隔值 output),在文件列中包含示例數據,您可以運行:
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 部分將 output 設置為,並使用新的 OFS 打印所需的標題(在示例中為 COLUMN1、COLUMN2 等)。 然后在每一行中,將 $1 設置為 $1 以對 $0 執行更改,同時考慮到新的 OFS。 使用 1 打印新行。
Output:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.