grep用于根据特定字符获取整个单词

时间:2019-06-12 08:14:49

标签: shell grep

我有一个很大的文本文件,其中包含许多列和行。我想根据字符串的一部分以及另一列中的内容在其中一列中获取全名(我不知道哪一列包含该名称)。

我尝试过这样的事情:

`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

这是一个非常大的文件,其中包含多列,我在这里没有显示。如果'$ 3 ==“ A2:98765”,我想在每一行中获取名称= 1/1,因此我使用了上述命令,但不起作用。请注意,我不知道名称(例如FRSYUZP),运行命令时,我只是想获得等于= 1/1的名称。 请告诉我您的解决方案,如果需要更多信息,请告诉我。

2 个答案:

答案 0 :(得分:1)

你能试试吗

find . | xargs grep -sw '1/1'

答案 1 :(得分:0)

看来您最好使用桌面工具来完成任务。由于您需要检查它,并且缺少命令行技能。

我建议将大文本文件转换为csv文件,并使用MS-ExcelLibreOffice-Calc之类的表单工具来处理它。

这是一个示例awk脚本,它将使用input.txt分隔符将您的csv文件转换为|

awk 'BEGIN{OFS="|"}1' input.txt > input.csv