sed 替换特定行
写一个脚本替换文件a.txt第30和33行的width值,从133变为144,怎么写?30:width=13331:heigth=18832:newwidth=133se...
写一个脚本替换文件 a.txt 第30和33行的width值,从133变为144,怎么写?
30: width = 133
31: heigth = 188
32: newwidth = 133
sed -i "30s/133/144" a.txt 这个问题出在哪里?
sed -i "30s/[0-9]+/144" a.txt 这个又有什么问题? 展开
30: width = 133
31: heigth = 188
32: newwidth = 133
sed -i "30s/133/144" a.txt 这个问题出在哪里?
sed -i "30s/[0-9]+/144" a.txt 这个又有什么问题? 展开
2个回答
展开全部
出错在于 s/patstr/repstr/ 必须是三个/标示匹配模式patstr和替换字串repstr
加上末尾/就对了
如果全文 有width的行都是133, 都想替换为144的话,还可以
sed -i "/width/s/[0-9]+/144/" a.txt
/width/ 是锁定带有width字串的行, 再接替换操作
加上末尾/就对了
如果全文 有width的行都是133, 都想替换为144的话,还可以
sed -i "/width/s/[0-9]+/144/" a.txt
/width/ 是锁定带有width字串的行, 再接替换操作
追问
对特定的两行呢? 比如30和33行做替换,怎么表达?
另外,正则表达式描述 三个文件:a.txt a-1.txt a-2.txt,应该如何表达?
追答
特定行直接标示行号
sed -i -e "30/s/pattern/repstr/" -e "33/s/pattern/repstr/"
正则表达式的话 a[-]?[0-9]?.txt 可以达到目的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询