1-е решение: Не могли бы вы попробовать следующее.Он будет помещать только номера строк в выходной файл output1.txt.
awk '/this is test[0-9]+/{print FNR}' Input_file > "output1.txt"
Чтобы получить номера строк и содержимое в разных выходных файлах (output1.txt
, output2.txt
), попробуйте выполнить следующее.
awk '/this is test[0-9]+/{print FNR > "output1.txt";print $0 > "output2.txt"}' Input_file
2-е решение: Или черпать вдохновение из комментария @kamil cuk и немного улучшить его, чтобы получить только номера строк.
grep -n 'test1\|test2' Input_file | cut -d':' -f1 > "output1.txt"
OR
grep -n 'this is test1\|this is test2' Input_file | cut -d':' -f1 > "output1.txt"
Чтобы получить согласованное содержимое в выходных файлах, попробуйте следующее.
grep -n 'this is test1\|this is test2' Input_file | cut -d':' -f2 > "output2.txt"
3-е решение: Использование sed
:
Чтобы получить только номера строк, используйте:
sed -n '/test[12]/{=;}' Input_file > "output1.txt"
Чтобы получить содержимое строк:
sed -n '/test[12]/p' Input_file > "output2.txt"