У меня длинная серия файлов. У некоторых из них есть общие черты. Я пытаюсь использовать awk, чтобы найти строки, которые отличаются между двумя файлами, и затем вывести это число в переменную для использования вне awk.
Вот как выглядит мой код awk в настоящее время:
awk 'NR==FNR{a[$1FS$2]=$0;next} {print (!a[$1FS$2]?$0:"")}' C6H6_1651.com C6H6_1652.com | awk 'END { print NR }'
То, что я получаю, это 32
, это количество строк в каждом из этих файлов. Из этих файлов я знаю, что желаемый результат должен быть 2
, поскольку между этими двумя файлами есть только две строки, которые различаются.
Другие варианты этих awk-команд, которые я пробовал:
awk 'NR==FNR{!a[$1FS$2]?$0:"";next} END { print NR }' C6H6_1651.com C6H6_1652.com
, который выводит 64
awk 'NR==FNR{a[$1FS$2]=$0;next} {print (!a[$1FS$2]?$0:"")} END { printf NR }' C6H6_1651.com C6H6_1652.com
, который выводит строку для каждой строки в документе, но единственными строками, содержащими текст, являются те, которые не совпадают между двумя файлы. 64
затем следует за этим блоком текста.
Вот содержимое C6H6_1651.com
%chk=C6H6_1651.chk
%nproc=20
# mp2/cc-pVTZ
C6H6_1651
0 1
C 0.000000000 1.394800000 0.000000000
C 0.000000000 -1.394800000 0.000000000
C 1.207900000 0.697400000 0.000000000
C -1.207900000 0.697400000 0.000000000
C -1.207900000 -0.697400000 0.000000000
C 1.207900000 -0.697400000 0.000000000
C 0.000000000 1.394800000 3.000000000
C 0.000000000 -1.394800000 3.000000000
C 1.207900000 0.697400000 3.000000000
C -1.207900000 0.697400000 3.000000000
C -1.207900000 -0.697400000 3.000000000
C 1.207900000 -0.697400000 3.000000000
H 0.000000000 2.482200000 0.000000000
H 2.149700000 1.241100000 0.000000000
H -2.149700000 1.241100000 0.000000000
H -2.149700000 -1.241100000 0.000000000
H 2.149700000 -1.241100000 0.000000000
H 0.000000000 -2.482200000 0.000000000
H 0.000000000 2.482200000 3.000000000
H 2.149700000 1.241100000 3.000000000
H -2.149700000 1.241100000 3.000000000
H -2.149700000 -1.241100000 3.000000000
H 2.149700000 -1.241100000 3.000000000
H 0.000000000 -2.482200000 3.000000000
Вот содержимое C6H6_1652.com
%chk=C6H6_1652.chk
%nproc=20
# mp2/cc-pVTZ
C6H6_1652
0 1
C 0.000000000 1.394800000 0.000000000
C 0.000000000 -1.394800000 0.000000000
C 1.207900000 0.697400000 0.000000000
C -1.207900000 0.697400000 0.000000000
C -1.207900000 -0.697400000 0.000000000
C 1.207900000 -0.697400000 0.000000000
C 0.000000000 1.394800000 3.000000000
C 0.000000000 -1.394800000 3.000000000
C 1.207900000 0.697400000 3.000000000
C -1.207900000 0.697400000 3.000000000
C -1.207900000 -0.697400000 3.000000000
C 1.207900000 -0.697400000 3.000000000
H 0.000000000 2.482200000 0.000000000
H 2.149700000 1.241100000 0.000000000
H -2.149700000 1.241100000 0.000000000
H -2.149700000 -1.241100000 0.000000000
H 2.149700000 -1.241100000 0.000000000
H 0.000000000 -2.482200000 0.000000000
H 0.000000000 2.482200000 3.000000000
H 2.149700000 1.241100000 3.000000000
H -2.149700000 1.241100000 3.000000000
H -2.149700000 -1.241100000 3.000000000
H 2.149700000 -1.241100000 3.000000000
H 0.000000000 -2.482200000 3.000000000