2010-10-08 72 views
2

我想從包含給定單詞的最後一次出現的行的文件中獲取行。Unix Sed從給定單詞的最後一次出現中獲取行

例:

誠然,已經在一些情節
變化。在原來,
凱恩試圖購買自己的高政治
辦公室。在新版本中,他只是把政客放在他的工資單上。

如果我給你 「在」 然後我需要

辦公室爲他自己。在新版本中,他只是把政客放在他的工資單上。

+0

你應該用正確的換行符格式化例如,使用「代碼」格式化,否則不可能理解你想要的。 – enzotib 2010-10-08 06:57:05

回答

1

嘗試:

sed -n '/yourWord/{$p}' yourFile.txt 
+0

其實我需要的是模式匹配的行下的整個文本@ last – 2010-10-08 09:06:57

0
$ word="In" 
$ awk -vw="$word" '{s=s$0}END{ m=split(s,str,w); print w str[m]}' file 
In the new version, he just puts politicians on his payroll. 

我不明白爲什麼有:

grep 'yourWord' yourFile.txt | tail -n1 

或用SED 「辦公室爲他自己。」雖然。

+0

它只是一個格式錯誤。抱歉。感謝您的迴應... – 2010-10-08 09:04:55

0

這應該工作:

作爲一個班輪:

patt=In 
sed -nr "/$patt/!b;:a;\$!N;/\n.*$patt/{h;s/\n[^\n]*\$//;g;s/^.*\n//};\$!ba;p" inputfile 

如果您sed需要-e

patt=In 
sed -nr -e "/$patt/!b" -e ":a" -e "\$!N" -e "/\n.*$patt/{h" -e "s/\n[^\n]*\$//" -e "g" -e "s/^.*\n//}" -e "\$!ba" -e "p" inputfile 

在不同的行:

patt=In 
sed -nr " 
    /$patt/!b 
    :a 
    \$!N 
    /\n.*$patt/{ 
    h 
    s/\n[^\n]*\$// 
    g 
    s/^.*\n// 
    } 
    \$!ba 
    p' inputfile 
0

我C一個打印四號線和行末只有

我的命令是

的sed -N「4,$ P」文件

相關問題