[英]Create all combinations of a single column from a file into two columns using awk or shell script or python
I have a file which contains airport code like below 我有一个包含机场代码的文件,如下所示
ATQ
HYD
BLR
GOI
AMD
CCJ
TRV
from the same file i have to create source destination mapping like below in gawk. 从同一文件中,我必须在gawk中创建如下所示的源目标映射。
src dest
ATQ HYD
ATQ BLR
ATQ GOI
ATQ AMD
ATQ CCJ
ATQ TRV
HYD ATQ
HYD BLR
HYD AMD
....
...
can anyone help me here,thanks in advance 任何人都可以在这里帮助我,谢谢
A simple awk
script could do this. 一个简单的awk
脚本可以做到这一点。 Just store all the elements of the line in array and run a loop for each element for every other element without repetitions which don't make sense. 只需将行中的所有元素存储在数组中,然后为每个其他元素的每个元素运行一个循环,而不必重复那些没有意义的操作。
$ awk 'BEGIN {printf("%s\t%s\n" ,"src", "dest")}
{
line[++c] = $1
}
END {
for ( i = 1; i <= c; i++ )
{
for ( j = 1; j <= c; j++ )
{
if (line[i] != line[j]) { printf("%s\t%s\n",line[i],line[j]) }
}
}
}
' file
will output, 将输出
src dest
ATQ HYD
ATQ BLR
ATQ GOI
ATQ AMD
ATQ CCJ
ATQ TRV
HYD ATQ
HYD BLR
HYD GOI
HYD AMD
HYD CCJ
HYD TRV
BLR ATQ
BLR HYD
BLR GOI
BLR AMD
BLR CCJ
BLR TRV
GOI ATQ
GOI HYD
GOI BLR
GOI AMD
GOI CCJ
GOI TRV
AMD ATQ
AMD HYD
AMD BLR
AMD GOI
AMD CCJ
AMD TRV
CCJ ATQ
CCJ HYD
CCJ BLR
CCJ GOI
CCJ AMD
CCJ TRV
TRV ATQ
TRV HYD
TRV BLR
TRV GOI
TRV AMD
TRV CCJ
One liner: 一班轮:
echo "src dest"; cat /tmp/air | while read s; do for d in `cat /tmp/air`; do if [ $s != $d ]; then echo $s $d; fi; done; done
Will output: 将输出:
src dest
ATQ HYD
ATQ BLR
ATQ GOI
ATQ AMD
ATQ CCJ
ATQ TRV
HYD ATQ
HYD BLR
HYD GOI
HYD AMD
HYD CCJ
HYD TRV
BLR ATQ
BLR HYD
BLR GOI
BLR AMD
BLR CCJ
BLR TRV
GOI ATQ
...
Version in bash assuming your airport list is in a.txt
file: bash中的版本(假设您的机场列表位于a.txt
文件中):
echo "src dest";
for src in `cat a.txt`; do
for dest in `cat a.txt`; do
if [ $src != $dest ]; then
echo "$src $dest";
fi
done;
done
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.