awk '/^/' пустой вывод (полная команда внутри)
cat /path/to/file | awk '{if ('/^TCF/' || '/^FSTL/' ) print $0;}' > /path/to/output.txt
Привет! Это создает пустой вывод, однако он работает с "документом textedit", но не с этим "простым текстовым документом". Кроме этого, его ничем не отличается, только то, что он не работает.
cat /path/to/file | awk '{if ($3=="TCF1" || $3=="FSTL7T2" || $3=="GLI3") print $0;}'
Этот работает нормально, но я хочу, чтобы все имена начинались с TCF, а не только с TCF1.
Пожалуйста помоги!
3 ответа
Вместо
cat /path/to/file | awk '{if ('/^TCF/' || '/^FSTL/' ) print $0;}' > /path/to/output.txt
ты можешь использовать
awk '/^TCF/ || /^FSTL/' /path/to/file > /path/to/output.txt
Заметка '/^TCF/'
неправильно, должно быть только /^TCF/
, Кроме того, избегайте использования cat
как файл может быть задан в качестве параметра awk
, В заключение, print $0
действие по умолчанию awk
, так что вы можете пропустить это.
Спасибо, парни! Это помогло мне решить эту проблему, но я получил следующее:
cat / path / to / file1 / path / to / file2 | awk '{if ($ 3 ~ / ^ TCF / || $ 3 ~ / ^ GLI /) print $ 0;}'> /path/to/test1.txt
Но знаете ли вы, как:
- Включить первую строку в file1 в вывод test1.txt?
- И можно ли включить, если TCF и GLI пришли из file1 или file2?
Это должно работать:
awk '/^TCF/||/^FSTL/' /path/to/file >output.txt
Проблема с вашим утверждением:
awk '{if ('/^TCF/' || '/^FSTL/' ) print $0;}'
должно быть:
awk '{if ($0~/^TCF/ || $0~/^FSTL/ ) print $0;}'