简单查找并替换为sed

Cry*_*tal 10 bash

我正在尝试替换文本文件中的几个不同字符串中的数字.基本上它将采取的形式

tableNameNUMBER
carNUMBER
Run Code Online (Sandbox Code Playgroud)

我是bash和脚本的新手,我不知道如何替换NUMBER我传入的内容.所以我试过这个:

#! /usr/bin/env bash
sed "s/NUMBER/$1/" myScript.txt > test.txt
Run Code Online (Sandbox Code Playgroud)

然后在命令行:

sh test.sh 123456
Run Code Online (Sandbox Code Playgroud)

这只有NUMBER在没有tableName或在它car之前的情况下才有效.如何NUMBER在这些情况下更换.有没有更好的${NUMBER}?对不起,如果这些都是noob问题.

Dav*_* W. 10

这应该工作得很好:

sed "s/NUMBER/$1/g" myScript.txt > test.txt
Run Code Online (Sandbox Code Playgroud)

g对端允许设置,如果它出现多次在一行上,以取代NUMBER.

事实上,快速测试:

foo.txt的

carNUMBER
tableNameNUMBER
NUMBER
NUMBERfoo

$ NUMBER=3.14
$ sed "s/NUMBER/$NUMBER/g" foo.txt
car3.14
tableNumber3.14
3.14
3.14foo
Run Code Online (Sandbox Code Playgroud)

这不是你的sed命令在做什么?

如果你想确保你改变号码,除非它是由本身,使用\b左右NUMBER:

$ sed "s/\bNUMBER\b/$NUMBER/g" foo.txt
carNumber
tabelNumberNUMBER
3.14
NUMBERfoo
Run Code Online (Sandbox Code Playgroud)

如果你不关心字符串的情况下NUMBER,把一个i关于SED命令的结尾:

$ sed "s/NUMBER/$NUMBER/gi" foo.txt
Run Code Online (Sandbox Code Playgroud)