我将尝试编写一个 awk 脚本,它可以接收所有共享公共字段(例如第一个字段)的行,并循环两次以在它们之间创建所有可能的组合。
最好通过以下示例进行说明 - 给定以下输入:
我希望脚本能够构建所有以"A"开头的行的可能组合,然后是以"B"开头的行。因此,这将是输出结果:
但是输出结果为:
最好通过以下示例进行说明 - 给定以下输入:
cat input.txt
A this
A text
B MORE
B THINGS
我希望脚本能够构建所有以"A"开头的行的可能组合,然后是以"B"开头的行。因此,这将是输出结果:
cat output.txt
A this A this
A text A this
A this A text
A text A text
B MORE B MORE
B THINGS B MORE
B MORE B THINGS
B THINGS B THINGS
所有可能的"this"和"text"组合 + "MORE"和"THINGS"的组合
到目前为止,我已经得到了这个:
awk '{pair[++c] = $0 } END {
for ( i = 1; i <= c; i++ ) {
for ( j = 1; j <= c; j++ ){
print pair[j], pair[i]
}
}
}' input.txt > output.txt
但是输出结果为:
A this A this
A text A this
B MORE A this
B THINGS A this
A this A text
A text A text
B MORE A text
B THINGS A text
A this B MORE
A text B MORE
B MORE B MORE
B THINGS B MORE
A this B THINGS
A text B THINGS
B MORE B THINGS
B THINGS B THINGS
它不考虑第一个字段是"A"还是"B",只是生成所有的组合。
有什么想法吗?
我考虑过根据第一个字段拆分输入文件,并对每个拆分文件进行双重循环。但我需要一个也适用于具有许多不同值的第一个字段的非常长的文件的解决方案。
谢谢!