正则表达式 – 在包含模式的行的开头添加一个字符串
发布时间:2020-12-14 05:49:02 所属栏目:百科 来源:网络整理
导读:参见英文答案 Difference between single and double quotes in Bash????????????????????????????????????6个 我试图评论我的脚本中的行,其中存在来自给定模式列表的模式.现在,我可以在命令行上执行以下操作: sed '/abcdefg/ s/^/#/' file.sql file.commen
参见英文答案 >
Difference between single and double quotes in Bash????????????????????????????????????6个
我试图评论我的脚本中的行,其中存在来自给定模式列表的模式.现在,我可以在命令行上执行以下操作: sed '/abcdefg/ s/^/#/' file.sql > file.commented 但是如果我使用变量作为模式(而不是像上面那样直接使用abcdefg),我就无法做到这一点. pattern=abcdefg sed '/$pattern/ s/^/#/' file.sql > file.commented 看起来它正在逃避美元角色而不是取得变量的价值. 你怎么用awk做同样的事情? 解决方法
您需要使用双引号使其适用于shell中的变量:
sed "/$pattern/ s/^/#/" file.sql > file.commented 您还可以使用shell的内联功能来保存输入文件本身的更改 sed -i.bak "/$pattern/ s/^/#/" file.sql 但是最好避免使用这个作业的sed,因为它使用正则表达式,如果$pattern包含/或一些特殊的正则表达式元字符,则命令会中断.最好像这样使用awk: awk -v p="$pattern" 'index($0,p) {$0 = "#" $0} 1' file.sql > file.commented (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |