更多的好奇心,但有沒有辦法將這兩個sed命令壓縮成一個?這兩個`sed`命令如何被壓縮成一個?
sed -r '/sometext/!d' file.txt | sed -r '5,10!d'
以上給出了包含「sometext」的行的第5到第10個實例(共6個)。
級聯:
sed -r '/sometext/!d;5,10!d' file.txt
給我只能在具有「SomeText」則會通過原始文件的第10行出現在5日線。
更多的好奇心,但有沒有辦法將這兩個sed命令壓縮成一個?這兩個`sed`命令如何被壓縮成一個?
sed -r '/sometext/!d' file.txt | sed -r '5,10!d'
以上給出了包含「sometext」的行的第5到第10個實例(共6個)。
級聯:
sed -r '/sometext/!d;5,10!d' file.txt
給我只能在具有「SomeText」則會通過原始文件的第10行出現在5日線。
這可能會爲你工作:
# make some test data
# seq 50 > /tmp/a
sed -i 's/.*/& sometext/;n' /tmp/a
# run existing commands
sed -r '/sometext/!d' /tmp/a | sed -r '5,10!d'
sometext
9 sometext
11 sometext
13 sometext
15 sometext
17 sometext
19 sometext
# run new command
sed '/sometext/H;$!d;g;s/\n/&&/5;s/.*\n\n//;s/\n/&&/6;s/\n\n.*//' /tmp/a
9 sometext
11 sometext
13 sometext
15 sometext
17 sometext
19 sometext
解釋:利益
/sometext/H
$!d
g
H
命令的工件。 s/\n/&&/5;s/.*\n\n//
s/\n/&&/6;s/\n\n.*//'
N.B.所述5,10!d
命令意味着刪除所有但線5至10
我在你的sed-fu之前鞠躬;但我認爲我會堅持管道的腳本可讀性! – Jamie
不sed的,但AWK是相當可讀:
awk '/sometext/ && ++count && 5 <= count && count <= 10' file.txt
是的,很可讀。 +1 – Jamie
你能提供一個樣本輸入/輸出? – kev