shell中有两个文件读取的常用命令,一个是awk,一个是sed。这两个你如果没有接触过shell,你就可能不知道,不可能所有大小的文件你都用vi来实现的。下面sed的用法记录了一些案例。
---文件字符替换 s-->S f--->F
下面两个命令类同,只是写法不一
[solgle@solgle tosk]$ sed -e 's/s/S/g' -e 's/f/F/g' 123.sh
[solgle@solgle tosk]$ sed 's/s/S/g;s/f/F/g' 123.sh
---/g表示所有替换,默认没有表示替换第一个,/2表示第二个替换,以此类推
[solgle@solgle tosk]$ sed 's/s/S/g;s/f/F/2' 123.sh
---删除第一行,然后输出到屏幕
[solgle@solgle tosk]$ sed '1d' 123.sh
---删除1到3行,输出到屏幕,并没有修改原文件
[solgle@solgle tosk]$ sed '1,3d' 123.sh
dsf
sdf
sd
f
sd
fdsfdsf
[solgle@solgle tosk]$ cat 123.sh
ss2sdfd;sfsd
dss3fsd
fdsfdsf
dsf
sdf
sd
f
sd
fdsfdsf
[solgle@solgle tosk]$
---真正修改文件,加-i
[solgle@solgle tosk]$ sed -i '1d' 123.sh
---插入文本到文件,打印到屏幕,并不修改原文件
[solgle@solgle tosk]$ sed '1 i sed insert a row' 123.sh
sed insert a row
ss2sdfd;sfsd
dss3fsd
fdsfdsf
dsf
sdf
sd
f
sd
fdsfdsf
[solgle@solgle tosk]$ cat 123.sh
ss2sdfd;sfsd
dss3fsd
fdsfdsf
dsf
sdf
sd
f
sd
fdsfdsf
[solgle@solgle tosk]$ sed '1 a sed insert a row' 123.sh
ss2sdfd;sfsd
sed insert a row
dss3fsd
fdsfdsf
dsf
sdf
sd
f
sd
fdsfdsf
[solgle@solgle tosk]$
---sed读取指定行数的行
[solgle@solgle tosk]$ sed -n '1p' 123.sh
ss2sdfd;sfsd
[solgle@solgle tosk]$ sed -n '1,3p' 123.sh
ss2sdfd;sfsd
dss3fsd
fdsfdsf
---------其他字符操作---------------------------------------
grep字符查找
[solgle@solgle tosk]$ grep -n 's' 123.sh
1: ss2sdfd;sfsd
2: dss3fsd
3: fdsfdsf
4:dsf
5:sdf
6:sd
8:sd
9:fdsfdsf
[solgle@solgle tosk]$ grep -c 's' 123.sh
8
[solgle@solgle tosk]$ grep -ci 's' 123.sh
8
[solgle@solgle tosk]$ grep -v 's' 123.sh
f
----sort排序
[solgle@solgle tosk]$ sort 123.sh
dsf
dss3fsd
f
fdsfdsf
fdsfdsf
sd
sd
sdf
ss2sdfd;sfsd
----tr文本转换
[solgle@solgle tosk]$ cat 123.sh |tr '[a-z]' '[A-Z]'
SS2SDFD;SFSD
DSS3FSD
FDSFDSF
DSF
SDF
SD
F
SD
FDSFDSF
---文件合并
[solgle@solgle tosk]$ paste -d: 123.sh 123.sh
ss2sdfd;sfsd: ss2sdfd;sfsd
dss3fsd: dss3fsd
fdsfdsf: fdsfdsf
dsf:dsf
sdf:sdf
sd:sd
f:f
sd:sd
fdsfdsf:fdsfdsf
[solgle@solgle tosk]$
cut字符串截取
[solgle@solgle tosk]$ cat /etc/passwd|cut -f1,2-4 -d:
root:x:0:0
bin:x:1:1
daemon:x:2:2
adm:x:3:4
lp:x:4:7
sync:x:5:0
shutdown:x:6:0
halt:x:7:0
mail:x:8:12
news:x:9:13
uucp:x:10:14
---剔除文件中的重复行
[solgle@solgle tosk]$ sort 123.sh |uniq > 456.sh
[solgle@solgle tosk]$ cat 456.sh
dsf
dss3fsd
f
fdsfdsf
fdsfdsf
sd
sdf
ss2sdfd;sfsd
[solgle@solgle tosk]$