如何使用bash命令将文件中的多列合并为单列?

Glo*_*min 2 linux bash sh

我有一个包含三个不同列的文本文件。我想通过将所有这些列合并为一个列来创建另一个文件。

我的文件看起来像这样

mep_kylo_campaigns               mep_primecastaccount        mep_flightstatus
nqs                              tod_do                      gandhi_sub_data 
kylo_register                    policy_record               mep_kylo_jobs   
mep_note                         msg_store                   mep_feature     
nqs_aside                        tbl_employee                mep_profile  
Run Code Online (Sandbox Code Playgroud)

我想要这样的输出

mep_kylo_campaigns                       
nqs                                                     
kylo_register                                      
mep_note                                                 
nqs_aside                                           
mep_primecastaccount
mep_flightstatus
tod_do
policy_record
msg_store
tbl_employee
gandhi_sub_data
mep_kylo_jobs
mep_feature
mep_profile
Run Code Online (Sandbox Code Playgroud)

Jam*_*own 6

这是一种方式,但顺序不一样:

$ cat file | tr -s ' ' '\n'
mep_kylo_campaigns
mep_primecastaccount
mep_flightstatus
...
Run Code Online (Sandbox Code Playgroud)

更新:因为这里建议使用无用的 cat 是另一种形式:

$ < file tr -s ' ' '\n'
Run Code Online (Sandbox Code Playgroud)

  • 为什么用cat没用?试试 `&lt; file tr -s ' ' '\n'`。 (4认同)

Mat*_*ios 5

如果你有兴趣这样做 awk 这是这样的:

awk 'BEGIN{ ORS="" } { for ( i=1; i<= NF ; i++){ print $i"\n"  }  }' input.txt
Run Code Online (Sandbox Code Playgroud)

此外,如果您想保留列的顺序,可以使用以下命令:

awk 'BEGIN{ ORS="" } { for ( i=1; i<= NF ; i++){ dict[i]=dict[i]$i"\n"  }  } END { for (key in dict) { print dict[key] }  }' input.txt
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!