Как grep и вырезать одновременно - PullRequest
3 голосов
/ 20 июня 2011

Возникли проблемы с резкой и резкой одновременно У меня есть файл test.txt. Внутри файла этот синтаксис

File: blah.txt Location: /home/john/Documents/play/blah.txt
File: testing.txt Location /home/john

Моя команда ./delete -r (filename), скажем, имя файла blah.txt.

Как мне найти test.txt для blah.txt, вырезать /home/john/Documents/play/blah.txt и поместить его в переменную

Ответы [ 3 ]

6 голосов
/ 20 июня 2011
grep -P "^File: blah\.txt Location: .+" test.txt | cut -d: -f3
5 голосов
/ 20 июня 2011

Всегда предпочитайте использовать как можно меньше внешних команд для вашей задачи.

Вы можете достичь желаемого, используя single awk команда:

awk '/^File: blah.txt/ { print $4 }' test.txt
0 голосов
/ 10 сентября 2015

Попробуйте это;)

filename=$(grep 'blah.txt' test.txt | grep -oP 'Location:.*' | grep -oP '[^ ]+$')
./delete $filename
...