awk规定,对于文本文件,默认情况下,一条记录对应一行,即记录之间的默认分隔符是换行符;而一条记录又可以分为多个字段,默认字段分隔符为空格。
输入记录分隔符变量:RS(record sign)
输出
记录分隔符变量:ORS(output record sign)
字段分隔符变量:FS(field sign)
输出
字段分隔符变量:OFS(output field sign)
1.一条记录占多行(多行记录)
有些情况下:一条记录跨越多行,记录与记录之间使用非换行符。这种情况下需要修改记录分隔符变量RS,RS告诉awk当前记录什么时候结束。
例如:
BEGIN {
FS="\n"
// 将字段分隔符设为换行符,一个字段占一行
RS=""
// 将记录分隔符设为空白行,记录之间由空白行分隔
}
2.OFS 和 ORS
输出字段分隔符(OFS),默认为单个空格" ",可以修改OFS变量,制定输出字段之间的分隔符。
eg.
print "hello',"there","jim"
// 输出为 hello there jim,这里的逗号仅告诉awk:"helo" "there" "jim"是三个单独的字段,输出字段之间的分隔符仍是默认的OFS-空格.
要使用逗号来区分输出的字段,如下:
BEGIN {
FS="\n"
RS=""
OFS="," // 将输出字段分隔符设置为逗号
}
输出记录分隔符(ORS),默认为换行(\n),也可自定义。