这就是我正在做的(简化的例子):

gsed -i -E 's/^(?!foo)(.*)$/bar\1/' file.txt

我试着在每行不是以foo开头的前加bar.这就是错误:

gsed: -e expression #1, char 22: Invalid preceding regular expression

发生了什么?

推荐答案

据我所知,sed人既不向前看,也不向后看.切换到具有类似语法的更强大的语言,如perl.

Linux相关问答推荐

将UTC字符串日期时间转换为毫秒UTC时间戳

Microsoft ODBC Driver 18 for Python Docker Image,ARM设备;生成错误

在查找命令中使用 printf

Linux 'column' 实用程序的使用

如何使用适用于 Linux 的 Dockerized SQL Server 设置 MSDTC

在 bash 中解析变量

当接收端未从套接字读取时,通过 Unix 套接字发送的消息会发生什么情况?

使用 awk 从文件中检索一组特定的字符串

sed: -i 不能与 Mac OS X 上的标准输入一起使用

用于 GCC/G++ 的宏来区分 Linux 和 Mac OSX?

grep 时间命令输出

如何告诉 valgrind 对Forking 进程进行 memcheck?

使用 ssh 判断远程主机上是否存在文件

判断 VT-x 是否已激活而无需在 Linux 中重新启动?

Windows 开发环境值得付出代价吗?

如何在 Linux 中查看日志(log)文件并在查看时应用自定义过滤器?

如何获取 GNU Makefile 中使用的 shell 命令的退出状态?

Linux控制台中的模糊文件搜索

从文件中随机 Select 行而不用 Unix 啜饮它

libaio.so.1:无法打开共享对象文件