簡體   English   中英

sed流編輯器unix linux命令:如何保留帶有特定文本字符串的段落

[英]sed stream editor unix linux command : how to keep retain a paragraph with a particular text string

我設法通過用空行分隔文本來將它們放在文件中。 我試圖只保留那些具有特定字符串的段落。 盡管Sed FAQ提到了解決方案,但它不起作用(請參見下面的示例)

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工具或其他方法的解決方案,請告訴我。

對於文件解析,請改用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM