文件:
DocumentNameA varying number of words symbols etc
DocumentName2 varying number of words symbols etc
AnotherDocumentName varying number of words symbols etc
我想做类似的事情
sed -i 's/$1/"<opentag>"$1"</closetag>"/' file
将文件更改为
<opentag>DocumentNameA</closetag> varying number of words symbols etc
<opentag>DocumentName2</closetag> varying number of words symbols etc
<opentag>AnotherDocumentName</closetag> varying number of words symbols etc
似乎一定有一个简单的方法可以做到这一点,但我还没有找到
答案1
您可以使用 awk 来更接近您建议的语法 -
awk '{$1 = "<opentag>" $1 "</closetag>"} 1' file
或者
awk '{$1 = sprintf("<opentag>%s</closetag>", $1)} 1' file
GNU awk 有一个-i inplace
开关,相当于 sed 的-i
,例如:
gawk -i inplace '{$1 = "<opentag>" $1 "</closetag>"} 1' file
答案2
您可以使用\1
来引用正则表达式中的匹配子表达式:
sed -Ei 's:^([^ ]+):"<opentag>\1</closetag>":' file