shell字符串处理命令小结

一、grep

grep用来简单地查找文本文件中匹配某字符串的行。

grep string filename

选项-i的意思是忽略string大小写,-r的意思是递归地进行所选的所有文件。

 

二、sed

sed是一个强大的命令,这里只记录常用的。

sed command_string filename

选项-n的意思是关闭sed的默认输出,-i的意思是允许sed对filename进行inplace的改动。

1. sed进行字符串匹配行筛选。

例如筛选有port字符串的对应行

sed -n "/port/p" filename

p的意思是打印出匹配行,如果是匹配仅在行首的port,则是"/^port/p"。

2. sed进行字符串替换

sed -i "s/old_string/new_string/g" filename

filename中所有old_string都会被替换为new_string。

有一个小技巧,如果我们要替换的字符串是文件路径的时候,会有/包含在里边,这时就会比较麻烦,我们可以改成

这样

sed -i "s|old_string|new_string|g" filename

3. sed对指定一些行操作

对指定一些行匹配

sed -n "/^haha/,+5 {/hehe/p}" filename

这个命令的含义是先确定haha开头的行,然后在后边的五行内匹配有hehe的行。

对指定一些行进行修改

sed -i "/^haha/,+5 s/old_string/new_string/g" filename

三、tr

tr -cd "string" 可以用来过滤标准输入中在string中的字符。

比如

echo "1234asdfsdf" | tr -cd "abcd"

的结果是add。

四、关于数字的查找和提取

查找比较方便,我们以端口配置为例吧

sed -n "/port=[0-9]\+/p" filename

就会打印出filename中所有有port=12343类似格式的行打印出来。

但是想要提取就得联用tr -cd了。

sed -n "/port=[0-9]\+/p" filename | tr -cd "[0-9]"

比如我们想要在shell中提取haha_server下配置中port的具体数值,就可以在shell中这样写

PORT=`sed -n "/^haha_server/,+5 {"/port=[0-9]\+/p}" filename | tr -cd "[0-9]"`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值