shell脚本--cut命令与awk简单使用
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
如需转载,请注明文章出处,谢谢!!!