awk不仅仅时linux系统中的一个命令,而且是一种编程语言,可以用来处理数据和生成报告
处理的数据可以是一个或多个文件,可以是来自标准输入,也可以通过管道获取标准输入
awk可以在命令行上直接编辑命令进行操作,也可以编写成awk程序来进行更为复杂的运用。
-F 指定分隔符
- 行(记录):默认以 (回车换行)结束。而这个行的结束不就是记录分隔符嘛。
- 所以在awk中,RS(记录分隔符)变量表示着行的结束符号(默认是回车换行)
-
在工作中,我们可以通过修改RS变量的值来决定行的结束标志,最终来决定“每行”的内容。
为了方便人们理解,awk默认就把RS的值设置为“ ”
让所有单词排成一列,这样每个单词都是单独的一行
1)设置RS值为空格
2)将文件里面的所有空格替换为回车换行符“
”
3)grep所有连续的字母,grep -o参数让他们排成一列。
方法一:
- awk 'BEGIN{RS="[ ]+"}{print $0}' count.txt | sort |uniq -c|sort
- cat count.txt | tr " " " " | sort | uniq -c | sort
- grep -o "[a-zA-Z]+" count.txt | sort | uniq -c | sort
- NR存放着每个记录的号(行号)读取新行时候会自动+1
- RS是输入数据的记录的分隔符,简单理解就是可以指定每个记录的结尾标志。
- RS作用就是表示一个记录的结束
- 当我们修改了RS的值,最好配合NR(行)来查看变化,也就是修改了RS的值通过NR查看结果,调试awk程序。
- ORS输出数据的记录的分隔符
- RS是输入记录分隔符,决定awk如何读取或分隔每行(记录)
- ORS表示输出记录分隔符,决定awk如何输出一行(记录)的,默认是回车换行( )
- FS是输入区域分隔符,决定awk读入一行后如何再分为多个区域。
- OFS表示输出区域分隔符,决定awk输出每个区域的时候使用什么分隔她们。
- awk无比强大,你可以通过RS,FS决定awk如何读取数据。你也可以通过修改ORS,OFS的值指定awk如何输出数据。