簡體   English   中英

如何使用 awk 命令行打印列並添加 header

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM