cut:对内容进行列切割
-d 后面的是分割符,表示用什么符号来分割符来分割列,分隔符使用引号括起来;
-f后面跟着要选择的字段列,从1开始,表示第一列,如果要多列,可以用逗号分隔 ;
-c参数后面跟着要选择的字符偏移,-b表示后面跟着要选择的字节偏移;
可以使用start-end表示一个区间,解决使用逗号的烦恼。
比如这个实例:
ubuntu@ubuntu:~$ cat test.txt
aaaaa;bbbbb;ccccc
ddddddd;eeeeee
fffff;gggggggg!iii;jjjjjj;kkkk
ubuntu@ubuntu:~$ cut -f 2,3 -d ";" test.txt #注意分隔符使用引号括起来
bbbbb;ccccc
eeeeee
gggggggg!iii;jjjjjj
ubuntu@ubuntu:~$ #上一条命令的作用是选择以;分隔之后的第2和第3字段
使用-表示区间
ubuntu@ubuntu:~$ cat test.txt
aaaaa"bbbbb"ccccc
ddddddd"eeeeee
fffff"gggggggg!iii"jjjjjj"kkkk
ubuntu@ubuntu:~$ cut -f 1-2 -d '"' test.txt
aaaaa"bbbbb
ddddddd"eeeeee
fffff"gggggggg!iii
ubuntu@ubuntu:~$ cut -d '"' -c 1-3 test.txt
cut: an input delimiter may be specified only when operating on fields
Try 'cut --help' for more information.
ubuntu@ubuntu:~$
注意:-d只能和-f一起配合使用,-c不能和-d一起使用,只能单独使用。想一想就很容易明白嘛,-d表示指定分隔符,而-c表示指定区间的字符,不需要分割。
awk:循环迭代对每一行进行操作
awk用来处理文本和数据,功能很强大,如果是一些简单的操作,可以使用cut命令来实现
-F 后面加上分隔符 ,建议空格分开后,使用引号将分隔符括起来,不加-F时,默认是以空格分隔。$0表示整行数据,$1表示第1个字段
ubuntu@ubuntu:~$ cat test.txt
aaaaa"bbbbb"ccccc
ddddddd"eeeeee
fffff"gggggggg!iii"jjjjjj"kkkk
ubuntu@ubuntu:~$ cat test.txt | awk -F '"' '{print $1"=>"$2}'
aaaaa=>bbbbb
ddddddd=>eeeeee
fffff=>gggggggg!iii
awk特别强大,这里提一点点,可以参考http://man.linuxde.net/awk