【发布时间】:2017-05-28 20:49:36
【问题描述】:
我正在尝试使用 sed 删除文件中的特定字符串。
test.txt 包含
123
456
789
111
1
000136
例如,我只需要删除文件中的 1 文本。我尝试使用命令
sed '/1/d' test.txt
输出将是
456
789
我如何只能使用 sed 删除 1?有什么办法吗?
谢谢!
【问题讨论】:
我正在尝试使用 sed 删除文件中的特定字符串。
test.txt 包含
123
456
789
111
1
000136
例如,我只需要删除文件中的 1 文本。我尝试使用命令
sed '/1/d' test.txt
输出将是
456
789
我如何只能使用 sed 删除 1?有什么办法吗?
谢谢!
【问题讨论】:
您的示例的问题是,sed 中使用的模式匹配包含1 字符的所有行。
改为调整模式:sed '/^1$/d' test.txt
这将只匹配包含单个字符的行,即1。
这不会匹配包含额外空格的行!
阅读更多关于正则表达式(以及特殊字符 ^ 和 $)的信息:
https://www.gnu.org/software/sed/manual/html_node/Regular-Expressions.html
【讨论】: