2013-09-27 68 views

回答

2
sed '/\(pattern\).*/{s//\1/; q;}' 
+0

謝謝,這正是我所尋找的。 –

+0

這會是相反的:sed'/ {s // \ 1 /; q;}。*'/ \(pattern \)'? –

1

使用帶有q命令的sed:

sed '/pattern/q' file 

直到pattern發現這將打印文件,然後將退出處理的其餘部分。

+0

如果圖案位於一條線的中間,則此命令仍會打印出該行的其餘部分。有沒有一種方法可以在發現字符串後立即停止進程? –

0

有很多方法可以做到這一點。比如,你可以使用grep的-n選項,使其輸出線號,提取的第一個行號,並用它來指導head顯示的行給定數目出來的文件:

head -n $(grep -n somestring file | cut -d: -f1 | head -n 1) file 
0

使用awk

awk '!f; /pattern/ {f=1}' file 

打印行,如果f=0,如果pattern發現設爲f=1

+2

我會用'awk'1;/pattern/{exit}'file'而不是該命令。恕我直言,它更簡單,更清晰,再加上它絕對更有效率。 –

+0

另一個更短的版本。 'awk'/ search/{exit} 1'文件' – Jotne

+0

雖然它不會打印包含匹配字符串的行,但它的功能不盡相同。 –

相關問題