奇怪的行为与sed命令

当我写这些时有一些奇怪的东西:

echo "VAL LES LE VAL LE VAL" | sed -E -e 's/ LES? / /g'

我得到:

VAL LE VAL VAL

代替:

VAL VAL VAL

LES之后的单词LE保留,但最后一个LE单词被删除。

GREP – “点匹配换行”选项?

Bash脚本缺less']'错误

如何检查脚本是否正在运行或不从脚本本身?

壳与grep,sed,awk在windows

限制所有Linux命令的输出

我在2005年5月10日的Mac OS X 10.8上使用sed命令

有谁知道这个结果的原因?

谢谢。

如何在bash中反转“”和“ 303 266”这样的转义反斜杠ecodings?

Ncurses阅读数字键和逃脱

将命令的输出分配给shell脚本中的variables

使用cygwin编译Windows上的ffmpeg的问题

Linux bash – input格式

sed不递归匹配输出模式 。 也就是说,输入行被读取,并且当模式匹配时,生成修改的输出,并且输入行的其余部分被扫描。 “s”命令不会扫描新创建的输出 。 因此,在您替换第一个LES 新创建的空间将不会被扫描,并且由于没有前导空间,下一个LE将不会被匹配。

替代方案:

echo "VAL LES LE VAL LE VAL" | sed -E -e 's/ *LES?//g'

echo "VAL LES LE VAL LE VAL" | sed -E -e 's/ LES? / /g'

这里<space>LES<space>匹配并被<space>取代。 所以下一个字符将是LE<space> ,它不匹配sed expr <space>LES?<space> ,因此没有修改。

相关文章

引言 本文从Linux小白的视角, 在CentOS 7.x服务器上搭建一个...
引言: 多线程编程/异步编程非常复杂,有很多概念和工具需要...
一. 宏观概念 ASP.NET Core Middleware是在应用程序处理管道...
背景 在.Net和C#中运行异步代码相当简单,因为我们有时候需要...
HTTP基本认证 在HTTP中,HTTP基本认证(Basic Authenticatio...
1.Linq 执行多列排序 OrderBy的意义是按照指定顺序排序,连续...