Shell sed命令 如何用正则表达式定位
问题有4个,可能需要浪费你一点宝贵的时间。谢谢你的帮助。
输入文件是ps auwx的内容名字origin.txt,当前用户为tmm_dev
1.如何在sed 脚本使用变量。
输入文件是ps auwx的内容,当前用户为tmm_dev
#! /bin/sed –f
/^$USR/p ---> 打印出所有用户的内容
2.如何在sed中使用正则表达式进行精确查找
#! /bin/sed –f
/\<tmm_dev\>/p ---->输出仍然为所有用户origin
3.如何实现在指定位置插入文本,并且写入到文本中。
sed –e ‘/tmm_dev/a ok’ –e ‘p’ –e ‘w output3’ origin.txt
目的是在tmm_dev 后追加ok 字符串,实际情况是:
a.在打印的时候显示了OK字符串,但是output3中仍然为原来的字符串
b.如何将这个命令转换为sed脚本。
4.如何查询包含两个模式的行。
我用
sed -n '/tmm_dev/10678/p' origin.txt
命令不能运行,提示:char 10: unknow command:'1'
------解决方案--------------------没有效果是什么意思?
------解决方案--------------------如何使用sed脚本来完成,我不清楚。我使用单行命令完成了所想要的结果。不知道我的理解是否符合?
准备工作:建一文件 origin.txt 文件内容 ps auwx 添加可执行权限 chmod +x origin.txt
1、使用变量USER来打印当前用户的内容
./origin.txt
------解决方案-------------------- sed -n /^USER/p
2、使用精确查找来打印当前用户的内容
./origin.txt
------解决方案-------------------- sed -n /^tmm_dev/p
3、如何实现在指定位置插入文本,并且写入到文本中
./origin.txt
------解决方案-------------------- sed -n -e '/tmm_dev/i\ ok' -e 'p'
------解决方案-------------------- tee out
./origin.txt
------解决方案-------------------- sed -n -e '/tmm_dev/a\ ok' -e 'p' > out
但是这两种方法都只是将ok插入到匹配模式所在行的前一行或者后一行
我个人觉得,若是想要在匹配模式后添加字符串,最好的方式是使用
./origin.txt
------解决方案-------------------- sed -n -e 's/npp/npp OK/g' -e 'p'
------解决方案--------------------tee out
4、同时有两个模式,不知道,但是我可以先得到含有一个模式的行,在此基础上含有第二个模式的行,这样可以得到结果。目地达到。完成!
sed -n '/a/p' dd.txt
------解决方案-------------------- sed -n '/b/p'
------解决方案--------------------1.如何在sed 脚本使用变量。
输入文件是ps auwx的内容,当前用户为tmm_dev
#! /bin/sed –f
/^$USR/p ---> 打印出所有用户的内容
还是用#!/bin/bash的方式解析比较好
然后是一些sed "sed command"命令,直接使用就够了。确保USR已经export到环境当中。
2.如何在sed中使用正则表达式进行精确查找
#! /bin/sed –f
/\<tmm_dev\>/p ---->输出仍然为所有用户origin
不要忘记了-n参数
3.如何实现在指定位置插入文本,并且写入到文本中。
sed –e ‘/tmm_dev/a ok’ –e ‘p’ –e ‘w output3’ origin.txt
目的是在tmm_dev 后追加ok 字符串,实际情况是:
a.在打印的时候显示了OK字符串,但是output3中仍然为原来的字符串
b.如何将这个命令转换为sed脚本。
这个用i和w命令实现。
4.如何查询包含两个模式的行。
我用
sed -n '/tmm_dev/10678/p'