Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 在AIX中对文件进行排序和连接_Sorting_Join_Aix - Fatal编程技术网

Sorting 在AIX中对文件进行排序和连接

Sorting 在AIX中对文件进行排序和连接,sorting,join,aix,Sorting,Join,Aix,我有两个示例文件test1.txt和text2.txt。如何恰当地加入他们 $> cat test1.txt 1 USA 2 CANADA 3 MEXICO 4 BAHAMAS 5 CUBA $> cat test2.txt MEXICO Mexico-city USA Washington CANADA Ottawa CUBA Havanna BAHAMAS Nassau $> join -j 2 -o '1.1,1.2,2.2' < (sort -k2 test

我有两个示例文件test1.txt和text2.txt。如何恰当地加入他们

$> cat test1.txt
1 USA
2 CANADA
3 MEXICO
4 BAHAMAS
5 CUBA


$> cat test2.txt
MEXICO Mexico-city
USA Washington
CANADA Ottawa
CUBA Havanna
BAHAMAS Nassau

$> join -j 2 -o '1.1,1.2,2.2' < (sort -k2 test1.txt) < (sort -k1 test2.txt)
ksh: 0403-057 Syntax error: `(' is not expected.

第一个解决方案不好!当test1.txt文件很大时,为每一行调用
grep
cut
会有太多开销

while read -r line; do
   key=${line#* }
   printf "%s %s\n" "${line}" $(grep "${key}" test2.txt | cut -d" " -f2-)
done < test1.txt

<(
我都尝试了$>join-j2-o'1.1,1.2,2.2'这是什么版本的KSH?您是否安装了一个更新的版本(
ksh93
?),或者bash?是的,Mat是有问题的。
KSH
在AIX上是
88
的原始风格。您必须找到
ksh93
,并使用适当的“shebang”行(可能位于脚本顶部的
#!/bin/ksh93
可以访问

while read -r line; do
   key=${line#* }
   printf "%s %s\n" "${line}" $(grep "${key}" test2.txt | cut -d" " -f2-)
done < test1.txt
awk 'FNR==NR { towns[$1]=$2; next;} $2 in towns {print $0 " " towns[$2];}' test2.txt test1.txt