Linux 下使用 Shell 处理文本时最常用的命令
1.sort排序
- 参数
-f:忽略大小写;
-b:忽略每行前面的空白部分;
-n:以数值型进行排序,默认使用字符串排序;
-r:反向排序;
-u:删除重复行。就是 uniq 命令;
-t:指定分隔符,默认分隔符是制表符;
2.uniq
- 参数
-c, --count //在每行前加上表示相应行目出现次数的前缀编号
-d, --repeated //只输出重复的行
-D, --all-repeated //只输出重复的行,不过有几行输出几行
-f, --skip-fields=N //-f 忽略的段数,-f 1 忽略第一段
-i, --ignore-case //不区分大小写
-s, --skip-chars=N //根-f有点像,不过-s是忽略,后面多少个字符 -s 5就忽略后面5个字符
-u, --unique //去除重复的后,全部显示出来,根mysql的distinct功能上有点像
3.seq
seq : 按顺序打印一些数字
基本用法: seq [选项] ...尾数
seq [选项] ...首数 尾数
seq [选项] ...首数 增量 尾数
例: seq 1 2 10 输出1~10之间的奇数
seq 2 2 10 输出1~10之间的偶数
seq 10 -2 1 输出10~1之间的偶数
4.RANDOM
5.wc
wc 统计行数、单词数、字节数
-l:统计行数
-c:统计字节数
-w:统计单词数
-m:统计字符数
6.cut
cut命令:提取文件内容中指定的字段(列)、字符内容。单词的默认分隔符为空格。
-b:按照字节切,utf-8编码中每个汉字占3个字节
-c:按照字符切 -d:指定分隔符
-f:指定以分隔符为分割的哪个字段
例:cut -d : -f 1,6 /etc/passwd
显示文件中以:分割的第1和第6列的内容
cut -d : -f 1,3-5 /etc/passwd�显示文件中以:分割的1,3,4,5列内容
cut -d : -f -3 /etc/passwd
显示文件中前三列内容
cut -d : -f 3- /etc/passwd
显示文件第三列到最后一列的内容
cut -c 1-3 /etc/passwd 取每行的前三个字符
echo ‘欢迎光临’ | cut -b 1-6 取前六个字节‘欢迎’
7.rev
rev命令将文件中的每行内容以字符为单位反序输出,即第一个字符最后输出,最后一个字符最先输出,依次类推。
8.awk利用索引合并文件
https://www.jianshu.com/p/63122e7fb79e
9.column 命令
作用:格式化列显示
参数:
-c 字符数 指定显示的列宽
-s“ 分隔符 “ 使用-t选项时,指定分隔符(允许指定多个分隔符)
-t 判断输入行的列数来创建一个表。分隔符是使用在-s中指定的字符。如果没有指定分隔符,默认是空格
# df -h | column -t
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 12M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 27G 6.0G 22G 22% /
/dev/sda1 1014M 137M 878M 14% /boot
tmpfs 797M 0 797M 0% /run/user/0
10.while read逐行读取多列
while read a b c
do
echo -e "姓名:$a\t身份证:$b\t手机号码:$c"
done<userName.txt
重定向符号的使用:
&>: 重定向标准输出或错误输出至同一个文件(或者2>&1)
扩展使用:
https://mp.weixin.qq.com/s/ImH0gfse6BrXoiNJart3Wg