1.文本处理命令
1.sort 命令
用于将文本内容加以排序 -n #按照数值的大小进行排序 基本语法: cat oldboy.txt | sort - n -r #按照相反的顺序 基本语法: cat oldboy.txt | sort - n -r -k #以某列进行排序 基本语法: cat oldboy.txt | sort - n -r -k2 >> 以第二列反向排序 -t #指定分隔符,默认是以空格为分隔符 基本语法: cat 4.txt |sort -n -r -k3 -t '|'
扩展:vim编辑内容全部替换(:号进入末行模式,输入1,% s/ */|/g)
2. uniq 命令
用于检查及删除文本文件中重复出现的行列,一般与sort 连用
连用语法: cat oldboy.txt | sort | uniq
先用sort 排序再用 uniq 去重
常用参数: - c : 在每列行边显示出现次数 cat oldboy.txt | sort | uniq -c -d : 仅显示重复出现的行列 cat oldboy.txt | sort | uniq -d -u : 仅显示出现一次行列 cat oldboy |sort | uniq -u
3. cut 命令
cut 命令 用来显示行中的指定部分,删除文件中指定字段 - d : 指定字段的分隔符,默认的字段分隔符为”Tab“ -f : 显示指定字段的内容 语法: cat oldboy.txt | cut -d '|' -f2
4. tr 命令
替换或者删除命令
参数: - d : 删除字符 语法: cat oldboy.txt | tr 123 678 >> 按照顺序 挨个字符替换
5. wc 命令
统计, 计算数字 参数: -c :统文件的Bytes数; -l :统计文件中的行数; -w :统计文件中单词的个数,默认以空白字符做为分割符 注:在Linux 系统中,一段连续的数字或字母的组合为一个词。
2. linux 三剑客之一 sed
sed 是linux 中 流媒体编辑器
三剑客:
grep : 过滤文本
sed :修改文本
awk : 处理文本
1.sed 的格式
sed [参数] ‘处理规则’ [操作对象]
2.参数
-e:允许多项编辑 sed -e '3d' -e '6d' 4.txt 删除 第3行,第6行 -n:取消默认输出 sed -e '3d' -e '6d' -n 4.txt 不显示输出内容 -i: 就地编辑 sed -i '5p' 4.txt 在 文本中打印第5行 增加到第6行 -r :支持 拓展正则 sed -r '/123/d' 4.txt /123/d 正则匹配 4.txt 123 并删除掉 -f :指定sed 定位脚本文件 sed -f 'r.txt' 4.txt /123/d 写入r.txt 用r.txt 处理 4.txt >> r.txt 为规则文件 4.txt 为操作对象
3. 定位
1.> 数字定位法‘ 》 指定行号 。sed ’3d‘ 4.txt ☞ 第3行 。sed '2,3d' 4.txt ☞ 2到3行 2.> 正则定位法 》指定正则定位 sed ’/g/d‘ 2.txt 删除 包含g 的行 sed ’/^g/d‘ 2.txt 删除以g 开头的行、 3.> 数字和正则定位法 sed '3,/^g/d' 2.txt >> 删除从第3行到以g 开头的行 4.> 正则正则定位法 sed '/^g/,/^j/d' 2.txt >>删除以 g 开头到以 j 开头的行
4. sed 的编辑模式
d : 删除
p : 打印(添加) sed -n '5p' 4.txt 打印一行 取消默认输出 a :在当前行后添加 一行或多行 sed '2axxx' 4.txt >> 在第二行后添加 xxx c : 用新的文本修改或者)替换)当前行 sed ’2cxxx‘ 4.txt >>把第2行内容修改为xxx i : 在当前行之前,插入文本 sed '2ixxx' 4.txt >> 在第2行之前插入一行 xxx r : 从文本当中读内容 sed '2r r.txt' 4.txt >> 在4.txt 第2行插入读取的 r.txt 中的内容 w: 将指定行写入文件 sed '2w w.txt' 2.txt >> 将2.txt 文件中第2行内容 写入w.txt文件中 y: 将字符转换成 另外一个字符 sed '2y /f/F/' 2.txt >> 将2.txt 第2行内容中 小写 f 替换成 F s: 将一个字符串转换成另外一个字符串(每一行只替换一次) sed 's/11/22' 6.txt >> 将6.txt 文件中 每一行数字11 替换为22 每行只替换一次 g: 全部执行 注:g 没有替换功能,只是把 前面模式的功能应用到整行中去 sed 's/11/22/g' 6.txt >> 替换6.txt 中全部内容 i :忽略大小写 第二个特征 与s 模式一起使用时
& :代表前面匹配到的内容
4.案例
1. 将nginx.conf 中的注释行全部 去掉
>>sed '/^ *#/d' /etc /nginx/nginx.conf
2. 将nginx.conf 中每一行之前增加注释
>> 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#.1001#g' /etc/sysconfig/network-scripts/ifcfg-eth[01]
4. 将 /etc/pssswd中的root修改为ROOT
sed -i 's#root#ROOT#g' /etc/passwd