首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在bash脚本中使用perl删除一行

在bash脚本中使用perl删除一行
EN

Unix & Linux用户
提问于 2020-10-28 12:42:56
回答 1查看 115关注 0票数 0

这个命令:

代码语言:javascript
复制
sed -i "\|^pref\.fullscreen\.toolbarPixels|d" ~/.vmware/preferences

很管用。

但这条命令:

代码语言:javascript
复制
perl -pi -e "\|^pref\.fullscreen\.toolbarPixels|d" ~/.vmware/preferences

给我输出:

代码语言:javascript
复制
Backslash found where operator expected at -e line 1, near "pref\"
Backslash found where operator expected at -e line 1, near "fullscreen\"
syntax error at -e line 1, near "\|"
Execution of -e aborted due to compilation errors.

为什么?

更新:

包含以下内容的test.txt文件:

代码语言:javascript
复制
melon
banana
peach
apple

这个命令:

代码语言:javascript
复制
perl -ni -e "print unless m|apple|; print unless m|banana|" test.txt

返回:

代码语言:javascript
复制
melon
melon
banana
peach
peach
apple

而不是:

代码语言:javascript
复制
melon
peach

为什么?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-10-28 12:52:28

Perl不是sed的替代器,它碰巧支持类似的s/pattern/replacement/语法,但这并不意味着其他sed命令可以工作。

你可以代替

代码语言:javascript
复制
perl -ni -e "print unless m|^pref\.fullscreen\.toolbarPixels|"

我觉得,或者只是

代码语言:javascript
复制
perl -ni -e "print unless /^pref\.fullscreen\.toolbarPixels/"

因为似乎没有特别的理由使用非标准的正则分隔符。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/616836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档