我需要一个内联sed命令将“ string”替换为“ varchar(30)”,但是创建表语法可以在多行上。
有没有办法告诉sed(或用awk?)在不以“ INSERT INTO ...”开头的行上进行替换?
我的数据中可能出现“字符串”一词,但我不希望数据损坏。
sed -i 's/string/varchar(30)/g'
我知道基本的正则表达式,但这超出了我的范围。谢谢!
最佳答案
sed -i '/^INSERT INTO/! s/string/varchar(30)/g'
从sed man page:
在地址(或地址范围)之后和命令之前,可以插入
!
,它指定仅当地址(或地址范围)不匹配时才执行命令。