我有以下代码,并且不断收到unterminated error
.例如,$1
可以ABC-TXT-123
并且我想TEXT abc.123
在文件中替换为ABC-TXT-123
.
#!/bin/bash
id=$1
if [[ $id =~ .*TXT.* ]]; then
sed -i "s/TEXT abc.*/TEXT $id/" someDataFile
fi
答案1
它与以下命令配合得很好:
$ cat > test
asd asd asd asd
asd TEXT abc.123 asd
asd asd asd asd
$ var='ABC-TXT-123'
$ sed -i "s/TEXT abc.*/TEXT $var/" test
$ cat test
asd asd asd asd asd
asd TEXT ABC-TXT-123
asd asd asd asd asd
也许您也可以向我们提供该文件的片段......
答案2
在 OSX 上,我必须添加一个额外的内容''
才能使其工作:
#!/bin/bash
id=$1
if [[ $id =~ .*TXT.* ]]; then
sed -i '' 's/TEXT abc.*/TEXT '$id'/' someDataFile
fi
这意味着 someDataFile 的内容从“TEXT abc.123”变为“TEXT ABC-TXT-123”。但您的描述要求略有不同,因此您可能需要:
sed -i '' 's/TEXT abc.*/'$id'/' someDataFile
相反,要替换整行,而不是将“TEXT”一词放回...