Shell
組合文件中的每兩列值
我有一個文件(只有一行),多列說 4(在這種情況下):
A B C D
我希望輸出作為列值的每個可能組合,一次取 2,例如:
AB AC AD BC BD CD
其中
AB
和BA
是等價的。我已經嘗試過程式碼: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