GREP для поиска второго столбца в текстовом файле - PullRequest
0 голосов
/ 03 февраля 2020

Мне нужно GREP второй столбец (имя пути) из текстового файла. У меня есть текстовый файл с размером пути md5checksum. Например:

ce75d423203a62ed05fe53fe11f0ddcf kart/pan/mango.sh 451b
8e6777b67f1812a9d36c7095331b23e2 kart/hey/local 301376b
e0ddd11b23378510cad9b45e3af89d79 yo/cat/so 293188b
4e0bdbe9bbda41d76018219f3718cf6f asuo/hakl 25416b

выше приведен текстовый файл, я использовал grep -Eo '[/]' file.txt, но он печатает только /, но я хочу вывод, как это:

kart/pan/mango.sh
kart/hey/local
yo/cat/so
asuo/hakl

Наконец, у меня есть использовать GREP.

Ответы [ 4 ]

2 голосов
/ 03 февраля 2020

Если вы можете жить с пробелами до и после, вы можете использовать:

grep -o "\s[[:alnum:]/]*\s"

Если вам нужно убрать пробелы, вам понадобится какой-нибудь упреждающий просмотр / просмотр задним числом нулевой ширины, который только доступно с -P (perl регулярные выражения), если у вас есть, вы можете использовать:

grep -Po "(?<=\s)[[:alnum:]/]+(?=\s)"
  • (?<=\s) - просмотр, чтобы увидеть, есть ли пробел перед строкой, но не захватывать его
  • (?=\s) - просмотр вперед, чтобы увидеть, есть ли пробел после матча, но не захватывать его
  • [:alnum:] - совпадать с альфа-цифрой c символы
  • [[:alnum:]/] - соответствует alphanumeri c символов и /
  • + - соответствует одному или нескольким

Однако, grep не является подходящим инструментом для это, cut / sed / awk намного лучше

0 голосов
/ 03 февраля 2020

Если вам разрешено комбинировать grep с другими инструментами, а во входном файле есть только косые черты во втором поле, вы можете использовать

tr " " "\n" < file.txt | grep '/'
0 голосов
/ 03 февраля 2020

Вместо этого используйте awk.

awk '{print $2}' file.txt
0 голосов
/ 03 февраля 2020
cut -d ' ' -f 2

-d '' означает, что вашим разделителем является пробел -f 2 означает, что вы хотите напечатать только поле номер два

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...