我想刪除除包含匹配花樣的行之外的所有行。刪除除匹配花樣行最佳實踐(sed)之外的所有行
這是我做的:
sed -n 's/matchingpattern/matchingpattern/p' file.txt
但我只是好奇,因爲我重命名匹配模式來匹配模式本身。這裏看起來很浪費。
有沒有更好的方式來做到這一點?
我想刪除除包含匹配花樣的行之外的所有行。刪除除匹配花樣行最佳實踐(sed)之外的所有行
這是我做的:
sed -n 's/matchingpattern/matchingpattern/p' file.txt
但我只是好奇,因爲我重命名匹配模式來匹配模式本身。這裏看起來很浪費。
有沒有更好的方式來做到這一點?
sed '/pattern/!d' file.txt
但是你在這裏重新創造grep
。
這可能會爲你工作:
sed -n '/matchingpattern/p' file.txt
/.../
是可以具有附着在這種情況下p
行動的地址。
而不是使用sed,這是複雜的,使用grep。
grep matching_pattern file
這應該會給你想要的結果。
+1爲'正確的工具'。但sed可以修改文件。 – 2014-08-14 19:37:46
grep肯定更好......因爲它更快。
例如用grep提取我正在使用用於在數據組6號染色體的所有基因組序列數據:
$ time grep chr6 seq_file.in > temp.out
real 0m11.902s
user 0m9.564s
sys 0m1.912s
相比的sed:
$ time sed '/chr6/!d' seq_file.in > temp.out
real 0m21.217s
user 0m18.920s
sys 0m1.860s
我重複它每次3X和〜相同的值。
是的。但是sed擁有grep沒有的這個漂亮的地方標誌。 sed -i'/ pattern /!d'文件名稱 比 更容易grep'pattern'filename> filename.tmp && mv filename.tmp文件名 – Geeklab 2015-04-24 08:19:00
警告:我提供了--quiet標誌以避免打印任何結果到終端,沒有意識到 - 我已經實現了它本身。這意味着所有的行都被刪除了,甚至是那些匹配模式的行。 – EriF89 2017-07-07 10:20:57