0

我很少有文件JOY_DOL_XXX在很多地方都包含一个字符串。我想用另一个带双引号的字符串替换它"JOY.DOL.XXX",但这里XXX可以是任何东西,例如,,MAN所以在这种情况下,我想编写一个脚本,相应地替换它而不明确指定它。 CATDOG

例如:

  JOY_DOL_MAN ==> "JOY.DOL.MAN"
  JOY_DOL_CAT ==> "JOY.DOL.CAT"

你能帮我吗,我该怎么做。

4

2 回答 2

2

Sed 似乎最简单:

sed 's|JOY_DOL_\(...\)|"JOY.DOL.\1"|g' file

输入:

JOY_DOL_MAN
JOY_DOL_CAT

输出:

"JOY.DOL.MAN"
"JOY.DOL.CAT"
  • \(...\)匹配三个字符。在替换中表示为\1
  • g将允许为每个输入模式替换多个匹配项。
于 2013-09-22T07:50:01.383 回答
0

awk可能有效。

awk '{gsub(/_/,".");print "\""$0"\""}' file

awk -F_ '{$1=$1;print "\""$0"\""}' OFS=. file

支持更复杂的请求。

echo ABC JOY_DOL_CAT XYZ | awk '{for (i=1;i<=NF;i++) {if (gsub(/_/,".",$i)) printf "\"%s\" ",$i; else printf "%s ",$i}print ""}'
ABC "JOY.DOL.CAT" XYZ
于 2013-09-22T08:02:49.280 回答