alv*_*vas 2 unix grep extract text-files multiple-columns
如果文本文件的指定列中包含单词,我想提取一行。我怎样才能在单行 unix 命令上做到这一点?也许有cat
, echo
, cut
,grep
有几个piples什么的。
我有一个以这种格式查看的文本文件
#SentenceID<tab>Sentence1<tab>Sentence2<tab>Other_unknown_number_of_columns<tab> ...
Run Code Online (Sandbox Code Playgroud)
文本文件的示例如下所示:
021348 this is the english sentence with coach . c'est la phrase française avec l'entraîneur . And then there are several nonsense columns like these .
923458 this is a another english sentence without the word . c'est une phrase d'une autre anglais sans le bus mot . whatever foo bar nonsense columns 2134234 $%^&
Run Code Online (Sandbox Code Playgroud)
如果我要查找的单词coach
在第二列中,则该命令应输出:
021348 this is the english sentence with coach . c'est la phrase française avec l'entraîneur . And then there are several nonsense columns like these .
Run Code Online (Sandbox Code Playgroud)
我可以用 python 来做到这一点,但我正在寻找一个 unix 命令或一些单行的东西:
outfile = open('out.txt')
for line in open('in.txt'):
if "coach" in line.split():
print>>outfile, line
Run Code Online (Sandbox Code Playgroud)
那这个呢?
awk -F'\t' '{if($2 ~ "coach") print} your_file
Run Code Online (Sandbox Code Playgroud)
-F'\t'
--> 使分隔符成为制表符。$2 ~ "coach"
--> 在第二个字段中寻找“教练”。print $0
或print
--> 打印整行。编辑
sudo_O提出了以下建议,甚至更短:
awk -F'\t' '$2~/coach/' file
Run Code Online (Sandbox Code Playgroud)