我的日志文件名为:log.txt
我的目标是仅在文件 log.txt 中的最后一个字符串:“Number”之后添加参数: $PARAM
例子:
PARAM=34.43435454
Run Code Online (Sandbox Code Playgroud)
尾部-10 log.txt
date 12.3.2010 Number 2.34
date 12.3.2010 Number 2.14
date 12.3.2010 Number 34.43435454
Run Code Online (Sandbox Code Playgroud)
有人知道如何用 sed 做到这一点吗?
每行“Number”之后:
sed "s/.*Number/& $PARAM/" log.txt
Run Code Online (Sandbox Code Playgroud)
最后一行“Number”之后:
sed "\$s/.*Number/& $PARAM/" log.txt
Run Code Online (Sandbox Code Playgroud)
在“Number”最后一次出现在文件中之后:
sed "/Number/!b;:a;\$!N;/\n.*Number/{h;s/\n[^\n]*\$//p;g;s/^.*\n//};\$!ba;s/^\(.*Number \)/\1$PARAM/" log.txt
Run Code Online (Sandbox Code Playgroud)
上一版本的说明:
/Number/!b
- 如果该行不包含“Number”分支到脚本末尾并打印该行:a
- 循环标签“a”
\$!N
- 如果不是文件的最后一行,则将下一行追加到模式空间内容的末尾/\n.*Number/{
- 如果模式空间在换行符后包含“Number”,则
h
- 复制模式空间以保存空间s/\n[^\n]*\$//p
- 删除换行符后面的部分并打印其余部分g
- 将保持空间复制到模式空间s/^.*\n//}
- 删除换行符之前的部分,如果结束\$!ba
- 分支到标签“a”s/^\(.*Number \)/\1$PARAM/
- 在“Number”后面添加变量的内容 归档时间: |
|
查看次数: |
5583 次 |
最近记录: |