複数の列を持つファイル(単一行)があります(例:4(この例では))。
A B C D
一度にインポートされた2つの列値のすべての可能な組み合わせを出力として使用します。たとえば、次のようになります。
AB
AC
AD
BC
BD
CD
ここでAB
とはBA
同じです。コードを試しましたが、sed 's! \([^ ]\+\)\( \|$\)!\1 !g' <file_name>
出力はAB CD
。
awk
シェルコマンドを使用してこれを行う方法を提案してください。
答え1
そしてawk
:
awk '{for(i=1;i<=NF;i++){for(j=i+1;j<=NF;j++){print $i$j;}}}' file
以下は2つのネストされたfor
ループです。
for(i=1;i<=NF;i++)
すべてのフィールドを繰り返します。for(j=i+1;j<=NF;j++)
次に、各フィールドに対して残りのすべてのフィールドを最初から繰り返しますi+1
。print $i$j
2つのフィールド値を印刷します。
出力:
AB
AC
AD
BC
BD
CD