因为命令解释默认是以空格为命令分隔符的,这样插入的内容只有We,而空格后面的内容会被解释为sed的输入文件,所以报这个错。
--------------------------------------------------------------------------------
明白为什么你不行了,脚本第一行不能有注释。
第一行必须放 #!/bin/sed -f
用sed命令在行首或行尾添加字符的命令有以下几种:假设处理的文本为test.file
在每行的头添加字符,比如"HEAD",命令如下:
sed 's/^/HEAD&/g' test.file
在每行的行尾添加字符,比如“TAIL”,命令如下:
sed 's/$/&TAIL/g' test.file
运行结果如下图:
几点说明:
1."^"代表行首,"$"代表行尾
2.'s/$/&TAIL/g'中的字符g代表每行出现的字符全部替换,如果想在特定字符处添加,g就有用了,否则只会替换每行第一个,而不继续往后找了
例:
3.如果想导出文件,在命令末尾加">outfile_name";如果想在原文件上更改,添加选项"-i",如
4.也可以把两条命令和在一起,在test.file的每一行的行头和行尾分别添加字符"HEAD"、“TAIL”,命令:sed '/./{s/^/HEAD&/s/$/&TAIL/}' test.file
使用捕获分组好像只能用在替换里面,思路:
(1)找到Hello的行,保存到缓冲区
(2)整行替换为\1 Tom.
(3)交换缓冲区
(4)读取缓冲区内容,追加到后面
echo "Hello World" | sed -r "/Hello/hs/(Hello).*/\1 Tom./xG"
注意:Hello之前如果还有内容,需要修改替换的查找正则
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)