regex – Linux sed命令不会更改目标文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了regex – Linux sed命令不会更改目标文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含889字,纯文字阅读大概需要2分钟。
内容图文
![regex – Linux sed命令不会更改目标文件](/upload/InfoBanner/zyjiaocheng/964/e411b8bb1906453f9a8d604830f990da.jpg)
使用我的shell脚本,当我运行./Test1 hello结果时.
它应该以标准输入和结果作为标准输出. shell应该在< td>,< / td>和abc之前删除任何空格
所以,我这样编写脚本
tr -d [:blank:] < $1
grep -r "<td>" $1 | sed -r 's/<td>//g' > $2
sed -r 's/<\/td>//g' $2
sed -r 's/abc//g' $2
但是,当我运行此命令时,结果文件的内容与hello文件的内容完全相同(唯一的区别是删除了空格)
文件hello内容:
<td>hello</td>
<td>hello</td>
<td>hello</td>
<td>abc</td>
<td>abc</td>
如何让sed将更改应用于目标文件?
解决方法:
如果要将更改从sed存储回文件,请使用-i选项:
$cat file
<head>abc</head>
<td>hello</td>
<td>hello</td>
<td>hello</td>
<td>abc</td>
<td>abc</td>
<h1>abc</h1>
$sed -ni '/<td>/{s/^\s*//;s/abc//;s/<\/\?td>//g;p}' file
$cat file
hello
hello
hello
编辑:如果我们使用与sed不同的分隔符并使用扩展的regexp选项-r,则regexp更清晰:
$sed -r 's_</?td>__g' file
hello
hello
hello
abc
abc
的?使前一个字符可选,因此/不必存在使正则表达式匹配< td>和< / td>在一个.
内容总结
以上是互联网集市为您收集整理的regex – Linux sed命令不会更改目标文件全部内容,希望文章能够帮你解决regex – Linux sed命令不会更改目标文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。