#bash #awk #sed
Вопрос:
У меня есть два файла. Одним из них является основной файл, который содержит множество столбцов. Другой содержит информацию о списке образцов. Теперь я хотел бы разделить основной файл на 2 части, в зависимости от того, находится образец (строка) в списке второго файла или нет. Теперь я использую код следующим образом
awk 'NR == FNR {a[$1]; next} !($1 in a)' $i.list $i > no_in_list.$i
чтобы исключить образец, который в списке, но мне было интересно, можно ли также сохранить образцы, которые в списке.
Комментарии:
1. GNU awk (по крайней мере) может печатать в указанном файле вместо стандартного вывода (
print ... >> file
). Поможет ли это?2. @RenaudPacalet Извините, я на самом деле не знаком с awk. Не могли бы вы привести мне пример? Спасибо
Ответ №1:
Вы можете использовать print >> "file"
действие для печати в указанном файле вместо стандартного вывода (проверено с GNU awk):
awk -v nil="no_in_list.$i" -v il="in_list.$i" '
NR == FNR {a[$1]; next}
!($1 in a) {print >> nil}
($1 in a) {print >> il}' $i.list $i