我正在编写一个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"
答案 0 :(得分:1)
您可以将测试放在sed
命令中:
sed -i '/+/! s/.*/replacement-line/' file.txt
!
表示仅在与正则表达式不匹配的行上进行替换。