如果一行中有2个相同的单词,请使用sed将第二个单词更改为“ jinx”

时间:2018-11-29 05:41:47

标签: regex linux unix sed

例如:我唯一的目标就是在比赛中进球。

const villages = { "lossesOccured": [{ "type": "destroyed", "affectedOn": "humans", "quantity": 120, "reliefFund": 100000, "location": { "district": "thanjavur", "villageName": "madukkur", "pincode": "614903" } }, { "type": "physicalDamage", "affectedOn": "humans", "quantity": 250, "reliefFund": 50000, "location": { "district": "thanjavur", "villageName": "madukkur", "pincode": "614903" } }, ] } const lossesArray = villages.lossesOccured const myMap = new Map(); lossesArray.forEach(loss => { if (loss.affectedOn === "humans") { myMap.set({ key: loss.affectedOn }, loss); } }); console.log(myMap);

两个词之间应有一个或多个词。

1 个答案:

答案 0 :(得分:2)

$ echo "My only goal is to score a goal in the match" | \
  sed -r 's/(\b\w+\b)(.*\w+.*)\1/\1\2jinx/g'
My only goal is to score a jinx in the match
  • -r激活扩展的posix regular expressions。注意:使用基本posix正则表达式时,您必须转义括号,例如:\(....\)+运算符不存在
  • (\b\w+\b)匹配一个单词
  • (.*\w+.*)捕获介于两者之间的所有内容

  • \1匹配第一个括号,\2匹配第二个括号

  • g代表全局,否则将只更改第一个匹配项。

因此,(\b\w+\b)(.*\w+.*)\1/将发现同一单词出现两次的行

然后\1\2jinx将用jinx替换第二次出现的\1