流编辑器sed学习

在linux shell中见到如下语法,记录一下

variant=`on -p254 gwm_cfg_tool -r PROJECT_CODE | sed 's/[^0-9]//g'`

on -p254 gwm_cfg_tool -r PROJECT_CODE得到的输出为PROJECT_CODE = [104]

variant得到的结果为104,sed的作用是将输出中不为数字0~9的字符转换成空字符

此外将window的sh拷贝到qnx系统中时,sh无法运行,输入了如下指令解决

sed -i 's/\r//' ipcstart.sh,sed的作用是将sh中的软空格替换为空字符,替换后运行正常

了解了一下流编辑器

基本语法:

sed [-nefri 参数] [function] [filePath]

-n:不会输出默认打印信息,除非子命令中特别指定打印 p 选项,则只会把匹配修改的行进行打印

 

 -e:执行多条子命令

 

 -f: 执行文件脚本

-r: 支持延伸型正则表达式

-i:直接修改读取的文件内容

 用法:

 1.替换 使用s命令进行文本替换

sed -i 's/newSrc/oriSrc/g'  test.txt , g表示全部替换,也可用2等,表示第几次匹配替换

也可指定行数 sed -i '2,$ snewSrc/oriSrc/g' test.txt 表示2到最后一行的替换

2.删除行 d命令  sed -i '/lcl/ d' test.txt   //直接字符为匹配,删除

正则表达式

 1. 行首符 ^  行尾符$ sed -n ' /^3/p' test.txt 打印行首为3行

 2.匹配字符集合[]  echo -e "dkdkgkfdsgkdfk\nt4\n223\n243\n54431dfwfdg" | sed -n '/[24]3/p'

 3.独有集[^] 

echo -e "Call\nTall\nBall" | sed -n '/[^CT]all/ p' 
4.字符范围 [-] 
echo -e "Call\nTall\nBall" | sed -n '/[C-Z]all/ p' 
5.\? 0-1次出现 \+ 1到多次出现
 
posted @ 2022-07-28 11:08  落叶满空山  阅读(48)  评论(0编辑  收藏  举报