55. FS - Input Field Separator(输入字段分隔符)
默认的输入字段分隔符为空格space
- 可以使用awk选项
-F
设置 - 可以使用内建变量
FS=""
在BEGIN块内设置1234567891011121314awk 'BEGIN { FS=","; \print "-------------\nName\tTitle\n-------------" } \{ print $2,"\t",$3; } \END {print "-------------"}' employee.txt-------------Name Title-------------John Doe CEOJason Smith IT ManagerRaj Reddy Sysadminanand Ram DeveloperJane Miller Sales Manager-------------
多分隔符
当你文本里各个字段使用的分隔符不一样时,Don’t worry,
你可以指定MULTIPLE多分隔符FS = "[,:%]"
表示以,
或:
或%
分隔
56. OFS - Output Field Separator(输出分隔符)
FS
是输入分隔符,对输入文件进行分隔。OFS
是输出分隔符,对输出文件进行格式化输出。
默认也是space
空格
输出是使用逗号,则默认使用OFS的默认值。没有使用逗号,则不使用
|
|
Note:使用的是变量时,则不管有没有逗号,都默认有OFS
123456 awk -F, '/^102/ {print $3 $2}' employee.txtIT Manager Jason Smith---------------------------------------awk -F, '/^102/ {print $3$2}' employee.txtIT Manager Jason Smith
57. RS - Record Separator(记录分隔符)
awk默认的一条记录是一行,而记录分隔符可以将多行看成一条记录处理,也可以将一行拆分成多个记录。
将一行差分成多个记录
|
|
没有使用记录分隔符,则只会输出下面结果
以:
分隔一行记录
多行当作一条记录
|
|
以-\n
为记录分隔符
58. ORS - Output Record Separator(输出记录分隔符)
同OFS
相同,都是对输出进行格式化,
差别是OFS
是对字段间的分隔,而ORS
是对记录的分隔
OFS为\n
,ORS为\n---\n
结果
59. NR - Number of Records(记录条号)
一条记录一个数字,表示第几条记录
Note:BEGIN块NR为0,END块NR为最后一条记录号
12345678910 awk 'BEGIN {print NR} \{print NR,$1} \END {print NR}' employee.txt01 101,John2 102,Jason3 103,Raj4 104,anand5 105,Jane5
59.5 NF - Number of Fields in a record(一条记录里的列数)
60. FILENAME – Current File Name(获取当前文件的文件名)
当我们后面没有添加输入文件时(比如用通道符|
处理的输入流),则获取的FILENAME
的值为-
Note:当
FILENAME
在BEGIN块内时,则获取的值为””空。因为BEGIN块在输入流之前
61. FNR - File “Number of Record”
和NR的区别是FNR是表示当前输入文件的记录数,而NR是整个输入的记录数
FNR在有多个输入文件时会每个文件重新计数,而NR不会