簡體   English   中英

使用AWK從數據集中提取特定列

[英]extract specific columns from dataset using AWK

我正在嘗試將簡單的awk腳本應用於數據集文件。 該文件有150列,我只需要20到30之間的列即可。

以下是我用來獲取字段介於20到30之間的記錄的腳本。

BEGIN{}
{
for(f=20;f<=30;f++){
    print $f;
    }
}

我不知道為什么我在下一行中得到10個字段的每個值。

那是,

樣本數據集

1 2 3 4 5 6 7
2 2 3 4 5 6 7 
3 3 3 4 5 6 7
4 4 4 4 5 6 7
5 5 5 5 5 6 7
6 6 6 6 6 6 7
7 7 7 7 7 7 7

I get output as 
1
2
3
4
5
6
7
2
2
3
4
5
6
7
...so on

BEGIN{FS=" ";}
{
for(f=20;f<=30;f++){
    printf("%s ",$f);
    }print "";
}

下面是另一種方法

awk -v f=20 -v t=30 '{for(i=f;i<=t;i++) \
                     printf("%s%s",$i,(i==t)?"\n":OFS)}' file

筆記

  1. ft分別是開始列和結束列。
  2. 我們使用三元運算符來控制所需列之間的字段分隔符。

編輯

如果您需要20至30列以及最后一列 ,則下面的內容就足夠了:

awk -v f=20 -v t=30 '{for(i=f;i<=t;i++) \
                         printf("%s%s",$i,(i==t)?OFS""$NF"\n":OFS)}' file

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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