Мне было интересно, может ли кто-нибудь помочь мне с моей проблемой?Я довольно новичок в Linux, и на этом этапе я нахожу руководство пользователя awk непроницаемым.
Скажем, file.txt содержит следующее:
group position
A 1
A 2
A 5
A 8
B 23
B 556
B 778
C 1
Я хочу найти файл по заданной комбинации столбцов (скажем, группа A, позиция 1), и я хочу вернутьисходная позиция, с позицией на следующей строке в столбце рядом с ней.
Например,
Поиск: A & 1 Возврат: 1 2
Используя grep, я могу вытащитьстрока ниже…
вход:
grep -w -A1 'A.2' file.txt
Выход:
A 2
A 5
… и если я передам результаты grep в awk, я получу то, что хочу…
input:
awk '{printf "%s%s",$2,(NR%2?FS:RS)}'
Output:
2 5
Пока все хорошо
Все становится сложнее, когда я ищу несколько терминов.
Например, если я искал A.2, A.5 и B.556
Мой требуемый вывод будет:
2 5
5 8
556 778
То, что я получаю:
вход:
grep -w -A1 'A.2\|A.5\|B.556' file.txt
выход:
A 2
A 5
A 8
--
B 556
B 778
вход:
awk '{printf "%s%s",$2,(NR%2?FS:RS)}'
выход:
2 5
8
556 778
Если я добавлю промежуточную команду, удалив строки, содержащие «-»
awk -F"\t" '$1 != "--"'
, а затем попробую снова запустить команду awk, я получу:
2 5
8 556
778
Может ли кто-нибудь направить меня вправильное направление, чтобы получить результат, который я хотел бы?
Ура!