Ans*_*ora 3 shell sed awk columns
我有一个文件(只有一行)有多列,例如 4(在本例中):
A B C D
Run Code Online (Sandbox Code Playgroud)
我希望输出为每次取 2 个列值的每种可能的组合,例如:
AB
AC
AD
BC
BD
CD
Run Code Online (Sandbox Code Playgroud)
其中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
Run Code Online (Sandbox Code Playgroud)
这是两个嵌套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
Run Code Online (Sandbox Code Playgroud)