2009-11-08 85 views
0

我設法通過將文本以空行分隔來將文本置於文件中。我試圖只保留那些有特定字符串的段落。雖然桑達常見問題解答中提到的解決方案不工作(見下面的例子)sed流編輯器unix linux命令:如何使用特定文本字符串保留段落

http://www.catonmat.net/blog/sed-one-liners-explained-part-two/

58. Print a paragraph that contains 「AAA」. (Paragraphs are separated by blank lines). 
sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;' 

http://www.linuxhowtos.org/System/sedoneliner.htm?ref=news.rdf

# print paragraph if it contains AAA (blank lines separate paragraphs) 
# HHsed v1.5 must insert a 'G;' after 'x;' in the next 3 scripts below 
sed -e '/./{H;$!d;}' -e 'x;/AAA/!d;' 

能否請你告訴我,爲什麼它不工作。此外,如果您知道使用unix工具或其他方式的解決方案,請告訴我。

+2

OOF,這是難以閱讀。你能重新格式化你的問題嗎? – perimosocordiae 2009-11-08 20:52:37

+0

剛剛通過抓住一些Lorem ipsum並用各種單詞替換'AAA'來測試這個,並且它似乎像廣告一樣工作:'sed -e'/./{H;$!d;}'-e'x;/Pellentesque/d;!」 lipsum.txt' – opello 2009-11-08 20:56:14

+0

你能比「不工作」更具體嗎? – 2009-11-09 01:13:21

回答

0

對於文件解析,請改用gawk。僅使用sed進行簡單替換。

awk -vRS= '/AAA/' file 

輸出:

$ more file 
text 
text 
BBB 
text 

text 
text 
AAA 
text 

text 
text 
CCC 
text 

$ awk -vRS= '/AAA/' file 
text 
text 
AAA 
text 
相關問題