linux - 使用 sed 删除文件中的行,但定义的多个模式除外

标签 linux bash sed

#!/bin/bash  #general

Remove this line

echo armada  #dev

Remove me also  #malfunction

我有一个像上面这样的文件。我只想保留带有 #general#dev 的行。

我尝试了 sed -i '' '/#dev/!d' starter.sh 但这只会保留带有 #dev

的行

我试过 sed -i '' '/#dev/!d;/#general/!d' starter.sh 但这会删除所有内容。

我想知道是否可以使用 sed 保留 #general#dev

注意:我使用的是 Mac

最佳答案

你可以使用这个sed:

sed -E '/#dev|#general/!d' file

#!/bin/bash  #general
echo armada  #dev

或者如果你想保留空白行,那么使用:

sed -E '/^[[:blank:]]*$|#(dev|general)/!d' file

关于linux - 使用 sed 删除文件中的行,但定义的多个模式除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51608594/

相关文章:

linux - sudo apt-get-repository : command is not found in debian linux

linux - Crontab 每 15 分钟运行一次,除了凌晨 3 点?

linux - bash `read -t` 在管道上不起作用

linux - 如何使用初始化函数?

javascript - 如何解析返回 javascript 的小部件来构建 DOM 而不是 HTML?

bash - 如何更改文件中的字符串,但将更改保存在另一个文件中,而不是原始文件中?

bash - 如何使用 awk 或 sed 递归查找/替换字符串?

linux - 在 shell 脚本/SED/AWK 中搜索 A 并替换 A|B 中的 B

python - Kivy 在 Samsung Exynos5422 w/Mali-T628 MP6 上表现不佳

linux - 在重音符内执行时 sed 奇怪的行为 - `