我想使用sed执行以下步骤:
before: test="testabc"
after: test="quiz testabc"
如何在引号的开头添加测验后跟空格?
感谢您的帮助。
答案 0 :(得分:2)
您可以使用以下sed
命令
$ echo 'test="testabc"' | sed 's/="\([^"]*\)"/="quiz \1"/'
test="quiz testabc"
说明:
s/pattern/replacement/
在搜索/替换模式下使用sed。="\([^"]*\)"
此正则表达式将获取="some string"
。( )
并返回参考\1
以保留字符串内容并添加测验s/pattern/replacement/g
使用全局替换模式或以下perl
解决方案也适用:
$ echo 'test="testabc"' | perl -pe 's/(?<==")([^"]*)(?=")/quiz \1/'
test="quiz testabc"
有关正则表达式的详细信息:http://www.rexegg.com/regex-quickstart.html
改进:
sed 's/test="\([^"]*\)"/test="quiz \1"/'
添加变量名称以确保仅更改该变量。sed 's/="/&quiz /g'
或者如果您不关心变量名称并希望更改每个分配。