Shell

組合文件中的每兩列值

  • April 8, 2016

我有一個文件(只有一行),多列說 4(在這種情況下):

A B C D

我希望輸出作為列值的每個可能組合,一次取 2,例如:

AB 
AC
AD
BC
BD
CD

其中ABBA是等價的。我已經嘗試過程式碼:sed 's! \([^ ]\+\)\( \|$\)!\1 !g' <file_name>但它的輸出為AB CD.

請建議如何使用awk或任何 shell 命令執行此操作。

awk

awk '{for(i=1;i<=NF;i++){for(j=i+1;j<=NF;j++){print $i$j;}}}' file

這是兩個嵌套for循環:

  • for(i=1;i<=NF;i++)循環遍歷所有欄位

    • for(j=i+1;j<=NF;j++)然後對於每個欄位,循環遍歷所有剩餘欄位(從 開始i+1
    • print $i$j列印兩個欄位值。

輸出:

AB
AC
AD
BC
BD
CD

引用自:https://unix.stackexchange.com/questions/275085