Linux文本处理命令与sed命令
Linux文本处理命令与sed命令
- 文本处理命令
- sed命令
一、文本处理命令
1.sort命令
sort 命令用于将文本文件内容加以排序
sort 可针对文本文件的内容,以行为单位来排序
语法:
sort [参数] [文件名] [-k] 参数: -n # 按照数值的大小排序 -r # 倒序排列 -k # 以某列进行排序 -t # 指定分割符,默认是以空格为分隔符
使用:
cat 1.txt | sort -n -r -k3 -t '|' sort 1.txt sort testfile -k 2
2.uniq命令
用于检查及删除文本文件中重复出现的行列,一般与sort命令结合使用
语法:
uniq [参数] [文件名] 参数: -c # 在每列旁边显示该行重复出现的次数 -d # 仅显示重复出现的行列 -u # 仅显示出现一次的行列
使用:
uniq 1.txt
注意:当重复的行并不相邻时,uniq 命令是不起作用的,这种情况就可以与sort一同使用
sort 1.txt | uniq
3.cut命令
cut命令用来显示行中的指定部分,删除文件中指定字段
语法:
cut [参数] [文件名] 参数: -d # 指定字段的分隔符,默认的字段分隔符为制表符(TAB) -f # 与-d一起使用,显示指定字段的内容
使用:
cat 1.txt | cut -d '|' -f2 # 1.txt中每行第2个字段
4.tr命令
替换或删除命令
语法:
tr [参数] 参数: -d #删除字符
使用:
cat 1.txt |tr a-z A-Z # 将文件1.txt中的小写字母全部转换成大写字母
5.wc命令
统计、计算数字
语法:
wc [参数] [文件名] 参数: -c # 统计文件的Bytes数 -l # 统计文件的行数 -w # 统计文件中单词的个数,默认以空白字符作为分隔符
使用:
wc 1.txt # 在默认的情况下,wc将计算指定文件的行数、字数,以及字节数 wc 1.txt 2.txt 3.txt # 统计多个文件的信息
注意:在Linux系统中,一段连续性的数字或字母组合为一个词
二、sed命令
sed命令是Linux中的流媒体编辑器
grep:过滤文本 sed:修改文本 awk:处理文本
格式:
sed [参数] '处理规则' [操作对象] 参数: -e # 允许多项编辑 -n # 取消默认输出 -i # 就地编辑 -r # 支持拓展正则 -f # 指定sed匹配规则脚本文件
定位:
1)数字定位法:
指定行号
sed '3d' 1.txt sed '2,3d' 1.txt
2)正则定位法:
指定正则定位
sed '/^g/d' 1.txt
3)数字和正则定位法:
sed '3,/^g/d' 1.txt
4)正则正则定位法:
sed '/^g/,/^j/d' 1.txt
编辑模式:
d:删除
p:打印
a:在当前行后添加一行或多行
sed '2axxx' 1.txt
c:用新文本修改(替换)当前行
sed '2cxxx' 1.txt
i:在当前行之前插入文本(单独使用时)
sed '2ixxx' 4.txt
r:在文件中读内容
sed '2r r.txt' 1.txt
w:将指定行写入文件
sed '2w w.txt' 1.txt
y:将字符转换成另一个字符
sed '2y/fa/FA/' 1.txt
s:将字符串转换成另一个字符串(每一行只替换一次)
sed 's/11/22/' 1.txt
g:将字符串转换成另一个字符串(全部替换)
sed 's/11/22/g' 1.txt
i:忽略大小写(跟s模式一起使用时)
$:代表前面匹配到的内容
案例:
1)将nginx.conf中的注释行全部去掉
[root@localhost ~]# sed '/^ *#/d' /etc/nginx/nginx.conf
2)将nginx.conf中每一行之前增加注释
[root@localhost ~]# sed 's/.*/# &/g' /etc/nginx/nginx.conf
3)要求一键修改本机的ip
192.168.15.100 ---> 192.168.15.101 172.16.1.100 ---> 172.16.1.101 sed -i 's#.100#.101#g' /etc/sysconfig/network-scripts/ifcfg-eth[01]
# 和 / 作用相同
4)将/etc/passwd中的root修改成ROOT
sed -i 's#root#ROOT#g' /etc/passwd
三、案例
1.用两种方法实现将文件中以#开头的行把#去掉
sed -r 's/^#//g' /etc/fstab cat /etc/fstab | tr -d '^#'
2.将文件中的Hello World替换成World Hello
sed -r 's/Hello World/World Hello/g' 7.txt awk '{print $2,$1}' 7.txt
3.删除一个文本中所有的数字
sed -r 's/[0-9]+//g' 8.txt cat 8.txt | tr -d '[0-9]+'

浙公网安备 33010602011771号