grep для получения всего слова на основе конкретного символа - PullRequest
0 голосов
/ 12 июня 2019

У меня большой текстовый файл с множеством столбцов и строк. Я хочу получить полное имя в одном из столбцов (я не знаю, в каком столбце его содержится) на основе части строки, а также содержимого в другом столбце.

Я пробовал что-то вроде этого:

`cat file.txt | awk '$3=="A"; {grep -W "1/1"}'`.  

На самом деле, я знаю только 1/1 от полного имени (полное имя B = 1/1 и существует в столбце, который я не знаю). Хотя я использовал -w и также попробовал -m, -e, ни один из них не работает хорошо, и вместо того, чтобы показывать только B = 1/1, вся строка, соответствующая $ 3 == "A" , была напечатана , Не могли бы вы помочь мне?

Редактировать : Извините, если неясно. ниже приведен краткий пример моего файла:

A1  A1:67543    FRSYUZP=0/0 ERYOUTY=0/1 YUTREOZ=1/1 PAERUYT=0/0
A2  A2:98765    FRSYUZP=1/1 ERYOUTY=1/1 YUTREOZ=0/1 PAERUYT=0/0
A3  A3:89745    FRSYUZP=0/1 ERYOUTY=0/0 YUTREOZ=0/1 PAERUYT=0/0

Это очень большой файл с несколькими столбцами, который я здесь не показываю. Я хотел бы получить имя = 1/1 в каждой строке, если '$ 3 == "A2: 98765", поэтому я использовал вышеупомянутую команду, но не работал. Обратите внимание, что я не знаю имени (скажем, FRSYUZP), когда запускаю команду, я просто получаю имя, равное = 1/1. Пожалуйста, сообщите мне ваше решение и дайте мне знать, если вам нужна дополнительная информация.

Ответы [ 2 ]

1 голос
/ 12 июня 2019

Можете ли вы попробовать это

find . | xargs grep -sw '1/1'
0 голосов
/ 12 июня 2019

Похоже, вам лучше использовать инструменты рабочего стола для своей задачи. Так как вам нужно это осмотреть, и не хватает навыков командной строки.

Я предлагаю преобразовать ваш большой текстовый файл в файл csv и использовать инструмент для работы с таблицами, например MS-Excel или LibreOffice-Calc.

Вот пример awk скрипта, который преобразует ваш input.txt файл в csv с | разделителем.

awk 'BEGIN{OFS="|"}1' input.txt > input.csv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...