Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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
Sed 如何更改紧跟匹配模式的行_Sed_Inline Editing - Fatal编程技术网

Sed 如何更改紧跟匹配模式的行

Sed 如何更改紧跟匹配模式的行,sed,inline-editing,Sed,Inline Editing,我需要一个sed单衬板,以便按照模式[lb]立即更换一条线: [lb] enabled=0 改为: [lb] enabled=1 提前感谢各位专家的帮助 希望这不是你的家庭作业 sed '/\[1b\]/,+1s/enabled=0/enabled=1/' <input-file> sed'/\[1b\]/,+1s/enabled=0/enabled=1/' IMO,sed不是真正合适的工具,但您可以: sed '/^\[lb\]/{ N; s/enabled=0/enabl

我需要一个sed单衬板,以便按照模式[lb]立即更换一条线:

[lb]
enabled=0
改为:

[lb]
enabled=1

提前感谢各位专家的帮助

希望这不是你的家庭作业

sed  '/\[1b\]/,+1s/enabled=0/enabled=1/' <input-file>
sed'/\[1b\]/,+1s/enabled=0/enabled=1/'

IMO,sed不是真正合适的工具,但您可以:

sed '/^\[lb\]/{ N; s/enabled=0/enabled=1/; }' input

单向使用
GNU sed

sed -i -r '/\[lb\]/ { N; s/(enabled=)0/\11/; }' file.txt

使用
awk
的更通用方法:

awk 'BEGIN {RS="\\[.*\\]"; ORS=OFS="" } { gsub("enabled=0", "enabled=1"); print RT, $0 }'

+1
地址不可移植。我相信它在gnu sedheh中是有效的,而不是家庭作业,只是不像我希望的那样是sed/awk方面的专家。谢谢堆栈流吃掉了我的“\”。在括号前面加上反斜杠。这正是我要找的,效果很好。出于好奇,你认为什么是更好的解决方案?多谢了,BTWI一直认为awk解决方案会更干净,或者说perl,但经过更多考虑,我认为sed做得很好。