tr命令和sed命令详解举例

Tr命令:

tr是简单的单个“字符”处理工具,而sed是功能非常强大的“字符串”处理工具。

 

tr用来从标准输入中通过替换或删除操作进行字符转换。t r主要用于删除文件中控制字符或进行字符转换。使用t r时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。
tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。

 

tr -c -d -s字符串1 字符串2

 

QUOTE:

不加参数表示替换,字符串2中的每个字符替换字符1中的对应字符。

-d 删除字符串1中所有输入字符。
-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。

-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII

 

 

示例:

1、将文件file中出现的"abc"替换为"xyz"

# cat file | tr "abc" "xyz" > new_file

【注意】这里,凡是在file中出现的"a"字母,都替换成"x"字母,"b"字母替换为"y"字母,"c"字母替换为"z"字母。而不是将字符串"abc"替换为字符串"xyz"

 

2、使用tr命令“统一”字母大小写

(小写 --> 大写)

# cat file | tr [a-z] [A-Z] > new_file

(大写 --> 小写)

# cat file | tr [A-Z] [a-z] > new_file

 

3、把文件中的数字0-9替换为a-j

# cat file | tr [0-9] [a-j] > new_file

 

4、删除文件file中出现的"Snail"字符

# cat file | tr -d "Snail" > new_file

【注意】这里,凡是在file文件中出现的'S','n','a','i','l'字符都会被删除!而不是紧紧删除出现的"Snail”字符串。

 

5、删除文件file中出现的换行'\n'、制表'\t'字符

# cat file | tr -d "\n\t" > new_file

不可见字符都得用转义字符来表示的,这个都是统一的。

 

6、删除“连续着的”重复字母,只保留第一个

# cat file | tr -s [a-zA-Z] > new_file

 

7、删除空行

# cat file | tr -s "\n" > new_file

 

 

Sed命令:

sed是功能非常强大的“字符串”处理工具,而tr是简单的单个“字符”处理工具

 

sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。

 

sed -n -子命令d p s

-n 取消默认的输出

-e 编辑命令,用于sed执行多个编辑任务的情况下。在下一行开始编辑前,所有的编辑动作将应用到模式缓冲区中的行上。

 

删除行

打印行

替换字符串

编辑命令,用于sed执行多个编辑任务的情况下。在下一行开始编辑前,所有的编辑动作将应用到模式缓冲区中的行上。

 

示例:

1只查看文件的第100行到第200
sed -n '100,200p' mysql_slow_query.log

 

2删除第二到第五行

sed '2,5d' datafile

3删除包含"My"的行到包含"You"的行之间的行
sed '/My/,/You/d' datafile

4删除包含"My"的行到第十行的内容
sed '/My/,10d' datafile

5默认情况下,sed把所有输入行都打印在标准输出上。如果某行匹配模式myp命令将把该行另外打印一遍。

sed '/my/p' datafile

6选项-n取消sed默认的打印,p命令把匹配模式my的行打印一遍。
sed -n '/my/p' datafile

7删除包含my的行,其余的都被显示

sed '/my/d' datafile

8取消默认输出,处理120行里匹配以My结尾的行,把行内所有的My替换为You,并打印到屏幕上。

sed -n '1,20s/My$/You/gp' datafile

9选项-e用于进行多重编辑。第一重编辑删除第1-3行。第二重编辑将出现的所有My替换为Your。因为是逐行进行这两项编辑(即这两个命令都在模式空间的当前行上执行),所以编辑命令的顺序会影响结果。

sed -e '1,3d' -e 's/My/Your/g' datafile

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值