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 -e 子命令d p s
-n 取消默认的输出。
-e 编辑命令,用于sed执行多个编辑任务的情况下。在下一行开始编辑前,所有的编辑动作将应用到模式缓冲区中的行上。
d 删除行
P 打印行
s 替换字符串
e 编辑命令,用于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把所有输入行都打印在标准输出上。如果某行匹配模式my,p命令将把该行另外打印一遍。
sed '/my/p' datafile
6,选项-n取消sed默认的打印,p命令把匹配模式my的行打印一遍。
sed -n '/my/p' datafile
7,删除包含my的行,其余的都被显示
sed '/my/d' datafile
8,取消默认输出,处理1到20行里匹配以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