sed - sed 命令替换文件中的值而不使用查找和替换
问题描述
我有一个带有字符串 log.txt 的文件,在文件中我有多行
line 1 text
line2/random/string/version:0.0.30
line 3 randome stuff
http://someurl:8550/
所以目前我sed
用来查找并将 0.0.30 替换为像 0.0.31 这样的新值
sed -i s/0.0.30/0.0.31/g log.txt
问题是我需要知道以前的值。
有没有办法总是从文件中的字符串中删除 0.0.30 并将其替换为新值?
也许是 indexof 或子字符串。
解决方案
您可以使用正则表达式定义来匹配0.0.30
和替换它,0.0.31
如下所示。该--posix
标志是为了确保没有应用 GNU 方言并使用纯 BRE(基本正则表达式)库。因为\{2\}
是匹配 2 次出现的数字的 BRE 语法。
sed -i --posix 's/[[:digit:]]\.[[:digit:]]\.[[:digit:]]\{2\}/0.0.31/' file
请参阅此处的正则表达式说明。
推荐阅读
- java - 方法级别的 Git Diff
- rest - 如何使用 github api 为 github gists 加注星标?
- mysql - 如何通过键和值在 MySQL 中搜索 JSON 数据?
- r - 如何将csv转换为R中的ts?
- java - firebase MLKIT 人脸检测相机分辨率
- sql - MS Access 查询代码从查询对象中消失
- java - 为什么我无法停止 Android BluetoothManager 搜索设备?
- hybris - 什么时候应该使用 List of Data 对象而不是 ListData 对象?
- angular - 编译期间的奇怪错误 - Angular 9
- php - 有没有办法在用 pdftk 填写表单时执行 PDF 字段脚本?