Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何替换文本文件中的特定行_Linux_Shell_Centos - Fatal编程技术网

Linux 如何替换文本文件中的特定行

Linux 如何替换文本文件中的特定行,linux,shell,centos,Linux,Shell,Centos,我有一个这样的文本文件 ... # xxx start ... # xxx end ... 我想替换#xxx start和#xxx end之间的行。 如果#xxx start未出现,请在文件末尾追加#xxx start和#xxx end。 有什么办法可以用shell实现吗?只要用sed删除#xxx start和#xxx end之间的行即可。然后将其附加到文件的末尾。谢谢@Barmar #!/bin/bash sed -i '/# xxx start/,/# xxx end/d' file ec

我有一个这样的文本文件

...
# xxx start
...
# xxx end
...
我想替换
#xxx start
#xxx end
之间的行。 如果
#xxx start
未出现,请在文件末尾追加
#xxx start
#xxx end


有什么办法可以用shell实现吗?

只要用sed删除
#xxx start
#xxx end
之间的行即可。然后将其附加到文件的末尾。谢谢@Barmar

#!/bin/bash
sed -i '/# xxx start/,/# xxx end/d' file
echo '# xxx start' >> file
curl url >> file
echo '# xxx end'

awk
来做。你想用什么来代替它们?@Barmar我想可以用sed来做,但是我不知道如何获得
#xxx start
的行号你为什么需要行号?只需使用
/#xxx start/,/#xxx end/
作为您的地址范围。但是如果找不到,则在末尾添加行将很难使用
sed
。使用
awk
很容易,因为您可以设置一个变量并在最后检查它。