替换文本文件中的一行

时间:2009-11-22 22:17:15

标签: bash file shell sed

我有一个带行

的文本文件
default_color acolor

我想用

替换这一行
default_color anothercolor

我不知道第一种颜色,第二种颜色包含在变量中。 我怎么能用bash来做呢?

谢谢

4 个答案:

答案 0 :(得分:7)

这不是纯粹的bash,但如果您有其他控制台工具,请尝试类似

的内容
cat your_file | sed "s/default_color\ .*/default_color\ $VAR/"

答案 1 :(得分:0)

你可以使用awk。手册输入在这里:

http://ss64.com/bash/awk.html

我不会写正则表达式,因为这取决于你的颜色格式,但这符合要求。祝你好运。

答案 2 :(得分:0)

使用gawk

awk '$2=="defaultcolor"{$2="anothercolor"}1' file

或只是bash shell而没有外部命令

while read -r line
do
 case "$line" in 
   *defaultcolor*) line=${line/defaultcolor/anothercolor}
 esac
 echo $line
done <"file"

答案 3 :(得分:-1)

不是真正的bash解决方案,但您可以使用perl对任意数量的文件进行就地替换:

perl -i -npe 's/default_color acolor/default_color another_color/' list_of_files