Bash脚本阅读行' +'如果不存在,则更改行

时间:2017-11-09 01:23:41

标签: bash shell sed

我正在编写一个bash脚本并尝试更改文件中的行。我目前有:

 if [[ ! $line == *[+]* ]]
   then
     [command to change line]

我只想通过添加已存在的文本来更改行。有什么建议?我试过了:

sed -i 'Ns/.*/replacement-line/' file.txt

sed -i '/Text_to_be_replaced/c\This is the new line.' file.txt
其他一些人在网上发现无济于事。

我的完整脚本是:

#!bin/bash
filename="227.dat"
while ((i++)); read -r line; do
sed -i 's/(/  /g' $filename
sed -i 's/)//g' $filename
sed -i 's/,/    /g' $filename
sed -i 's/-x/-1     0     0/g' $filename
sed -i 's/x/ 1     0     0/g' $filename
sed -i 's/-y/ 0    -1     0/g' $filename
sed -i 's/y/ 0     1     0/g' $filename
sed -i 's/-z/ 0     0    -1/g' $filename
sed -i 's/z/ 0     0     1/g' $filename
[*command to add to line*]
done < "$filename"

1 个答案:

答案 0 :(得分:1)

您可以将测试放在sed命令中:

sed -i '/+/! s/.*/replacement-line/' file.txt

!表示仅在与正则表达式不匹配的行上进行替换。