我有一个属性文件,我想要进行属性替换,所以我写了一个sed模式来改变
host = 1234
有另一个值,但是当我执行
时echo "host = 1234" | sed 's/\#*\(host[ \t]*\)\=\([ \t]\d*\)/\1\=\1/g'
我得到了替换完成(host = host)但是\ 2原子也被附加到字符串的末尾(1234)。我该如何删除它?
`host =host 1234
答案 0 :(得分:2)
第一个问题是\d
没有按照你的想法行事。至少使用[0-9]
。
你仍然得到host =host
,这对我来说似乎很疯狂。
编辑:
好
echo "host = 1234" | sed 's/#*\host[ \t]*=[ \t]*\([0-9]*\)/host = asdf/g'
我希望你明白这一点。
但这是你可能想要的:
sed '/^#/!s/[ \t]*\([^ \t]*\)[ \t]*=[ \t]*\([^ \t]*\)/\1 = newvalue/g' input_file
这会在anything = anything
的非评论行中将anything = newvalue
更改为input_file
。要使其成为由newvalue
替换的特定键,请使用:
sed '/^#/!s/[ \t]*\(host\)[ \t]*=[ \t]*\([^ \t]*\)/\1 = newvalue/g' input_file
例如仅替换阅读host = anything
的行。
答案 1 :(得分:0)
这是否符合您的需求?
echo "host = 1234" | cut -d"=" -f 1
产量
host
然后,
echo "host = 1234" | cut -d"=" -f 1
产量
1234