使用grep進行過濾

使用grep進行過濾

假設我有一個包含以下幾行的 file.txt:

hello myname1 is yellow.pcapng red
festive myname33 is hddd.pcapng dfdf
crude myname44 is hello.pcapng

現在我的目標是過濾行,使其輸出到 out.txt,如下所示:

myname1 yellow.pcapng
myname33 hddd.pcapng
myname44 hello.pcapng

現在我知道我可以使用:

grep -oh "\w*myname\w*" /tmp/file.txt  > /tmp/out.txt
grep -o '[^ ]\+g' /tmp/file.txt > /tmp/out.txt 

分別取得表達式的兩個對應部分。如何組合這些命令以獲得所需的輸出?

答案1

給定您的範例數據,您可以假設單字 #2 和 #4 是您想要提取的內容;你可以用 awk 來表達:

awk '{ print $2, $4 }' < /tmp/file.txt > /tmp/out.txt

答案2

你可以使用cut

cut -d' ' -f2,4 < /tmp/file.txt > /tmp/out.txt 

答案3

使用 awk 代替 grep。

awk '{print $2,$4}' /tmp/file.txt > /tmp/out.txt

cat file.txt您正在將to的輸出通過管道傳輸awk

然後使用 awk 表達式'{print $2,$4}',列印分割線的第二個和第四個字段,並用空格分隔。

您的輸出將如您所願。

答案4

由於上面已經提供了shell腳本方法,所以在Python中嘗試過並且工作得很好

#!/usr/bin/python
o=[]
k=open('i','r')
for z in k:
    o.append(z.strip().split(' ')[1])
        o.append(z.strip().split(' ')[3])
for d in range(0,len(o),2):
    print " ".join(o[d:d+2])

輸出

myname1 yellow.pcapng
myname33 hddd.pcapng
myname44 hello.pcapng

相關內容