小乔 发表于 2018-8-26 13:54:53

shell 文本处理的几个命名sed,awk,sort,uniq,cut

文本处理
Cat命令
  1)拼接文件:纵向拼接,不是横向拼接
  root@docker-host-03:~# cat list list2
  line2
  line3
  line4
  line5
  line5
  line6
  line7
  total 32K
  lrwxrwxrwx 1 root root   12 Jan4 11:30 backup -> /data/backup
  -rw-r--r-- 1 root root   46 Apr1 13:18 list
  -rw-r--r-- 1 root root    0 Apr1 13:29 list2
  -rwxr-xr-x 1 root root   84 Apr1 09:24 test.sh
  drwxr-xr-x 4 root root 4.0K Apr1 13:16test_shell
  drwxr-xr-x 2 root root 4.0K Mar 28 09:42 tmp
  drwxr-xr-x 6 root root 4.0K Jul 192016tools
  root@docker-host-03:~# ls -lh | cat - list    #这里的-标示标准输入
  total 36K
  lrwxrwxrwx 1 root root   12 Jan4 11:30 backup -> /data/backup
  -rw-r--r-- 1 root root   46 Apr1 13:18 list
  -rw-r--r-- 1 root root512 Apr1 13:29 list2
  drwxr-xr-x 10 root root 4.0K Mar 232016 root
  -r-------- 1 root root 1.7K Mar 31 10:06 solar
  drwxr-xr-x 3 root root 4.0K Dec1 10:07testgit
  -rwxr-xr-x 1 root root   84 Apr1 09:24 test.sh
  drwxr-xr-x 4 root root 4.0K Apr1 13:16test_shell
  drwxr-xr-x 2 root root 4.0K Mar 28 09:42 tmp
  drwxr-xr-x 6 root root 4.0K Jul 192016tools
  line2
  line3
  line4
  line5
  line5
  line6
  2)格式化输出
  输出行号
  root@docker-host-03:~# cat -n list
  1line2
  2line3
  3line4
  4line5
  5line5
  6line6
  压缩空格行
  root@docker-host-03:~# cat -s list
  line2
  line3
  line4
  line5
  line5
  line6
  line7
paste
  按列合并文件:纵向拼接
  root@docker-host-03:~# paste employe.txt bonus.txt | awk '{print $1,$2,$3,$5}' | tr '' '' |s
  ort -s -k2
  400 ashok sharma $1,250
  100 jason smith $5,000
  200 john doe $500
  300 sanjay gupta $3,000
  root@docker-host-03:~# cat employe.txt
  100 Jason Smith
  200 John Doe
  300 Sanjay Gupta
  400 Ashok Sharma
  root@docker-host-03:~# cat b
  cat: b: No such file or directory
  root@docker-host-03:~# cat bonus.txt
  100 $5,000
  200 $500
  300 $3,000
  400 $1,250
cut
  以列形式处理文本行
  -d以什么作为分隔符来分割列
  -f指定要显示哪几个列
排序、去重
  Sort
  -n 按照数字序列排序
  -r 倒序排序
  -k 指定以某列
  -d 以字典序列排序
  tac
  会以逆序的方式打印输出
  root@docker-host-03:~# cat list
  line2 200
  line3 100
  line4 100
  line5 700
  line5 800
  line6 50
  line7 350
  root@docker-host-03:~# cat list | tac -
  line7 350
  line6 50
  line5 800
  line5 700
  line4 100
  line3 100
  line2 200
  Uniq
  Uniq会去除重复的行,但仅限于是已经拍过序的输入,或者是已经排过序的文件。
  -u只显示那些是唯一的行
  -c统计重复行出现的次数
  -d找出重复行的内容
tr命令
  tr是一个构建一行命令的一个小而美的工具。tr只能接收标准输入作为命令参数。tr可以进行文件的转换、删除、压缩
  替换
  root@docker-host-03:~# echo "123 abcdefg:aaa:" | tr ":" "
页: [1]
查看完整版本: shell 文本处理的几个命名sed,awk,sort,uniq,cut