如何解决使用sed在已知字符串和未知字符串之间添加点
好的,所以我知道我已经提到过类似的帖子,但是不适合我遇到的确切问题。
供参考: shell sed - substitute an unknown string between a known string and a generic delimiter replace a unknown string between two known strings with sed
file unknown-string,unknown-string,unknown-string
我需要添加.
这样:
file unknown-string,.unknown-string,.unknown-string
我尝试sed -i 's/file.*,/file,./g' file.txt
无效!
注意:文件中有很多,
,所以我不能使用sed -i's /,/,./'
谢谢。
解决方法
在理解您要匹配的格式有些困难之后,要匹配以下行格式:
file a,b,c,d....
并仅在以'.'
开头的行的前两个逗号后附加句点file
,您可以使用sed
表达式:
sed '/^file/s/,/,./1;s/,./2'
说明
-
/^file/
仅匹配以"file"
开头的行, -
s/,./1
是通用替换形式,其中 find 表达式与逗号','
匹配,并用",."
替换 ,1
结束替换,指定要替换匹配的第一个匹配项, -
s/,./2
是相同的,但是2
指定替换匹配的第二次出现。
使用/输出示例
继续上述格式,您可以执行以下操作:
$ echo "file a,d...." | sed '/^file/s/,./2'
file a,.b,.c,d....
让我知道您是否还有其他问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。