tr命令以及sed命令

tr命令

tr 用于转字符 : 即 , 如果给定了两个字符范围 , 则只要发现某个字符位于第一个范围中 , 就会将其转换为第二个范围中对等的字符。该命令通常在 shell 脚本中使用 , 以按预期情况转换数据

 tr 'A-Z' 'a-z' <file
[root@localhost ~]# cat /aaa/file1
redhat
[root@localhost ~]# tr 'a-z' 'A-Z' <  /aaa/file1   ##将文件内容中属于a-z包含范围里的内容转换成大写的
REDHAT
[root@localhost ~]# tr 'A-Z' 'a-z' <  /aaa/file1   ##将文件内容中属于a-z包含范围里的内容转换成小写的
redhat

sed命令

• sed 命令是流编辑器 , 用于对文本数据流执行编辑。假定要处理一个文件名 , sed 将对文件中的所有行执行搜索和替换 , 以将修改后的数据发送到标准输出 ; 即 , 其实际上并不修改现有文件。与 grep 一样 , sed 通常在管道中使用
• 由于 sed 命令通常包含可以解释为 shell 元字符的字符 ,因此请按下面示例所示引用 sed 命令。默认情况下 , sed对文件中的所有行执行操作。在提供 sed 时 , 可带有地址

sed 's/原字符/替换字符/g' file  ##将全部行原字符转换为替换字符
sed -e '策略1' -e '策略2' file   ##例如:sed -e 's/root/'
sed '3,5s/原字符/替换字符/g'   ##3-5行替换
sed xd              ##屏蔽指定行
sed -e  xp              ##复制指定行
sed -n xp           ##只显示指定的行
危险动作:
sed -i  file            ##把转换后的内容输入到指定文件,会直接更改文件内容

sed命令里 不加-i 不更改文件内容

[root@localhost ~]# cat /aaa/file1
test:root:sssd
TEST:sssd:root
TEST:sssd:root
sssd:test:test
root:test:sssd
root:root:sssd
[root@localhost ~]# sed 's/test/root/g' /aaa/file1  ##将文件内容所有的test换成root
root:root:sssd
TEST:sssd:root
TEST:sssd:root
sssd:root:root
root:root:sssd
root:root:sssd
[root@localhost ~]# sed '1,2s/sssd/root/g' /aaa/file1  ##将第一行和第二行的sssd换成root
test:root:root
TEST:root:root
TEST:root:root
root:test:test
root:test:root
root:root:root
[root@localhost ~]# sed -e 1p -e 2p /aaa/file1  ##将第一行以及第二行复制并紧挨着原来的第一行或第二行
test:root:root
test:root:root  ##复制的第一行
TEST:root:root
TEST:root:root  ##复制的第二行
TEST:root:root
root:test:test
root:test:root
root:root:root
[root@localhost ~]# sed -n  1,6p /aaa/file1  ##将文件内容第一行至第六行找出
test:root:root
TEST:root:root
TEST:root:root
root:test:test
root:test:root
root:root:root
[root@localhost ~]# sed -n 2,4p /aaa/file1   ##将文件内容第二行至第四行找出
TEST:root:root
TEST:root:root
root:test:test
[root@localhost ~]# sed -ne 2p -ne 4p /aaa/file1  ##将文件第二行找出并复制 第四行找出并复制,然后输出
TEST:root:root
root:test:test
[root@localhost ~]# sed -e 's/root/test/g' -e 's/test/root/g' /aaa/file1  ##加e的话就可以执行后边的内容
root:root:root
TEST:root:root
TEST:root:root
root:root:root
root:root:root
root:root:root
[root@localhost ~]# sed -i 's/root/test/g' /aaa/file1   ##直接修改文件内容
[root@localhost ~]# cat /aaa/file1
test:test:test
TEST:test:test
TEST:test:test
test:test:test
test:test:test
test:test:test

你可能感兴趣的:(linux)