我想從包含給定單詞的最後一次出現的行的文件中獲取行。Unix Sed從給定單詞的最後一次出現中獲取行
例:
誠然,已經在一些情節
變化。在原來,
凱恩試圖購買自己的高政治
辦公室。在新版本中,他只是把政客放在他的工資單上。
如果我給你 「在」 然後我需要
辦公室爲他自己。在新版本中,他只是把政客放在他的工資單上。
我想從包含給定單詞的最後一次出現的行的文件中獲取行。Unix Sed從給定單詞的最後一次出現中獲取行
例:
誠然,已經在一些情節
變化。在原來,
凱恩試圖購買自己的高政治
辦公室。在新版本中,他只是把政客放在他的工資單上。
如果我給你 「在」 然後我需要
辦公室爲他自己。在新版本中,他只是把政客放在他的工資單上。
嘗試:
sed -n '/yourWord/{$p}' yourFile.txt
其實我需要的是模式匹配的行下的整個文本@ last – 2010-10-08 09:06:57
$ 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 「辦公室爲他自己。」雖然。
它只是一個格式錯誤。抱歉。感謝您的迴應... – 2010-10-08 09:04:55
這應該工作:
作爲一個班輪:
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
我C一個打印四號線和行末只有
我的命令是
的sed -N「4,$ P」文件
你應該用正確的換行符格式化例如,使用「代碼」格式化,否則不可能理解你想要的。 – enzotib 2010-10-08 06:57:05