我有两个看起来像的文件:
**file1.txt**
"a","1","11","111"
"b","2","22","222"
"c","3","33","333"
"d","4","44","444"
"e","5","55","555"
"f","6","66","666"
**file2.txt**
"b"
"d"
"a"
"c"
"e"
"f"
我需要创建一个更改file1
顺序的脚本,并以file2
的顺序开头。 e.g:
"b","2","22","222"
"d","4","44","444"
"a","1","11","111"
"c","3","33","333"
"e","5","55","555"
"f","6","66","666"
我创建了一个看起来像的命令:
nawk '/^("b")/' file1 ; nawk '/^("d")/' file1 ; nawk '/^("a")/' file1 ; nawk '/^("c")/' file1 ; nawk '/^("e")/' file1 ; nawk '/^("f")/' file1
它可以解决问题,但是我想进一步自动化它,但不知道如何继续。我怎样才能创建一个命令或变量来查看file2("b")
的第1行并将其放在上面的命令中,然后查看file2("d")
的第2行,并将其放在上面的命令中,依此类推。基本上如果可能的话,我希望命令查看文件2并填写上面命令中的空格。你们建议的任何其他更方便的命令将不胜感激。请注意,我目前必须在上面的命令中手动插入文件2中的字母。
实际文件可能包含超过100行
答案 0 :(得分:0)
awk -F, 'NR==FNR { a[$1]=$0; next }
($1 in a) { print a[$1] }' file1 file2
将所有file1
读入内存,然后按file2
的顺序打印。如果file1
非常大,则可能不可行。
这是一个常见的Awk习语;如果您需要更详细的解释,请搜索许多近似重复项。