Simple find and replace with sed
bash
Solution
This should work just fine:
sed "s/NUMBER/$1/g" myScript.txt > test.txt
The `g` on the end allows set to replace NUMBER if it appears multiple times on one line.
In fact, a quick test:
foo.txt
carNUMBER
tableNameNUMBER
NUMBER
NUMBERfoo
$ NUMBER=3.14
$ sed "s/NUMBER/$NUMBER/g" foo.txt
car3.14
tableNumber3.14
3.14
3.14foo
Isn't that what your `sed` command is doing?
If you want to make sure you don't change NUMBER unless it's by itself, use `\b` around `NUMBER`:
$ sed "s/\bNUMBER\b/$NUMBER/g" foo.txt
carNumber
tabelNumberNUMBER
3.14
NUMBERfoo
If you don't care about the case of the string `NUMBER`, put an `i` on the end of the sed command:
$ sed "s/NUMBER/$NUMBER/gi" foo.txt
Problem
I'm trying to replace a number that is in a couple different strings in a text file. Basically it would take the form of ``` tableNameNUMBER carNUMBER ``` I'm pretty new to bash and scripting and I wasn't sure how to replace `NUMBER` with what I pass in. So I've tried this: ``` #! /usr/bin/env bash sed "s/NUMBER/$1/" myScript.txt > test.txt ``` then at the command line: ``` sh test.sh 123456 ``` This only works if `NUMBER` is on its own, without `tableName` or `car` preceding it. How can I replace `NUMBER` in those cases. Is it better to have `${NUMBER}`? Sorry if these are totally noob questions.