我正在尝试将字符串替换为文件中的数字 所以,我有变量&FLOW,需要更改为001,例如:
cat file.txt
This is file ' PISP &FLOW'
PISD.DATA.CYCLE&FLOW..ONE
所需的输出
This is file ' PISP 001'
PISD.DATA.CYCLE001.ONE
我在脚本中尝试了以下命令:
for item in file.txt
do
sed 's/\&FLOW/\./001/g' $item
sed 's/\&FLOW/001/g' $item
done
出现错误。第二个sed命令正在运行,但是我需要先运行开始的sed命令,否则先运行第二个sed命令后,它将忽略开始的sed命令。
任何帮助将不胜感激!
答案 0 :(得分:1)
尝试一下:
for item in file.txt
do
sed 's/\&FLOW\./001/g' $item
sed 's/\&FLOW/001/g' $item
done
在/
之后,您有一个多余的FLOW
这也可能起作用:
sed -i 's/\&FLOW[\.]?/001/g' file.txt
答案 1 :(得分:1)
使用单个sed
命令并使用-i
来实际修改文件内容,您需要将file.txt
作为sed
命令的输入:
sed -i 's/&FLOW\.\{0,1\}/001/g' file.txt
请参见online demo。如果在Mac OS中使用它,则需要sed -i '' 's/&FLOW\.\{0,1\}/001/g' file.txt
。另请参见sed edit file in place。
模式详细信息
这是符合POSIX BRE的模式匹配
&FLOW
-文字&FLOW
子字符串\.\{0,1\}
-出现.
个字符的0或1。