awk-语法深入-记录、字段分隔符
2016-08-22 20:01
806 查看
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.
// 输出为 hello there jim,这里的逗号仅告诉awk:"helo" "there" "jim"是三个单独的字段,输出字段之间的分隔符仍是默认的OFS-空格.
要使用逗号来区分输出的字段,如下:
输出记录分隔符(ORS),默认为换行(\n),也可自定义。
将多行记录换成一行内使用TAB分段格式
a.md内容如下,一条记录占三行,记录之间用空白行区分,一个字段占一行。
huanxgin
要求:将一条记录整理为一行,个字段之间用tab分隔,以便导入excel处理:
总结: awk 命令与shell相同,一条命令占一行的情况下不需要分号来进行区分,多条命令在同一行时,需要分号来区分。
while 、if、for语句也保持一致.
NF、NR 常用来计算待处理文件的行数,引用最后一个字段($NF)。
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.
// 输出为 hello there jim,这里的逗号仅告诉awk:"helo" "there" "jim"是三个单独的字段,输出字段之间的分隔符仍是默认的OFS-空格.
要使用逗号来区分输出的字段,如下:
输出记录分隔符(ORS),默认为换行(\n),也可自定义。
将多行记录换成一行内使用TAB分段格式
a.md内容如下,一条记录占三行,记录之间用空白行区分,一个字段占一行。
huanxgin
要求:将一条记录整理为一行,个字段之间用tab分隔,以便导入excel处理:
总结: awk 命令与shell相同,一条命令占一行的情况下不需要分号来进行区分,多条命令在同一行时,需要分号来区分。
while 、if、for语句也保持一致.
NF、NR 常用来计算待处理文件的行数,引用最后一个字段($NF)。
输入记录分隔符变量: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),也可自定义。
BEGIN {
FS="\n"
RS=""
OFS=","
ORS="\n\n" // 输出间隔翻倍
}
将多行记录换成一行内使用TAB分段格式
a.md内容如下,一条记录占三行,记录之间用空白行区分,一个字段占一行。
huanxgin
XIAN
711711
CC
HANGZHOU
399229
MM
Shanghai
888912
要求:将一条记录整理为一行,个字段之间用tab分隔,以便导入excel处理:
[root@web1 awk]# awk 'BEGIN{FS="\n";RS="";OFS="\t"} {print $1,$2,$3}' a.md
huanxgin XIAN 711711 // 输出分隔符指定为制表符
CC HANGZHOU 399229
MM Shanghai 888912
[root@web1 awk]# awk 'BEGIN{FS="\n";RS="";ORS=""} { x=1; while(x<NF) { print $x "\t" ;x++} print $NF "\n"}' a.md //每个字段来一个制表符,三个字段后来一个换行。
huanxgin XIAN 711711
CC HANGZHOU 399229
MM Shanghai 888912
总结: awk 命令与shell相同,一条命令占一行的情况下不需要分号来进行区分,多条命令在同一行时,需要分号来区分。
while 、if、for语句也保持一致.
NF、NR 常用来计算待处理文件的行数,引用最后一个字段($NF)。
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),也可自定义。
BEGIN {
FS="\n"
RS=""
OFS=","
ORS="\n\n" // 输出间隔翻倍
}
将多行记录换成一行内使用TAB分段格式
a.md内容如下,一条记录占三行,记录之间用空白行区分,一个字段占一行。
huanxgin
XIAN
711711
CC
HANGZHOU
399229
MM
Shanghai
888912
要求:将一条记录整理为一行,个字段之间用tab分隔,以便导入excel处理:
[root@web1 awk]# awk 'BEGIN{FS="\n";RS="";OFS="\t"} {print $1,$2,$3}' a.md
huanxgin XIAN 711711 // 输出分隔符指定为制表符
CC HANGZHOU 399229
MM Shanghai 888912
[root@web1 awk]# awk 'BEGIN{FS="\n";RS="";ORS=""} { x=1; while(x<NF) { print $x "\t" ;x++} print $NF "\n"}' a.md //每个字段来一个制表符,三个字段后来一个换行。
huanxgin XIAN 711711
CC HANGZHOU 399229
MM Shanghai 888912
总结: awk 命令与shell相同,一条命令占一行的情况下不需要分号来进行区分,多条命令在同一行时,需要分号来区分。
while 、if、for语句也保持一致.
NF、NR 常用来计算待处理文件的行数,引用最后一个字段($NF)。
相关文章推荐
- awk支持多个记录分隔符的写法
- awk-语法深入-用户自定义函数
- awk抓取一行记录中的某个字段
- Sqlserver根据某字段分隔符将一条记录拆分为多行记录
- awk支持多个记录分隔符的写法
- awk支持多个记录分隔符的写法
- awk 语法深入-判断循环语句
- awk支持多个记录分隔符的写法
- Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库 自定义日志记录功能,按日记录,很方便 C#常量和字段以及各种方法的语法总结 类型,对象,线程栈,托管堆在运行时的关系,以及clr如何调用静态方法,实例方法,和虚方法 asp.net webapi 自定义身份验证
- [17]AWK记录、字段、模式、跨平台移植及正则表达式
- Sqlserver根据某字段分隔符将一条记录拆分为多行记录
- awk将某个字段按照分隔符分割之后统计次数
- awk支持多个记录分隔符的写法
- 关于sap的字段和对象修改记录的查找
- 《C++ primer》学习笔记之二十八:类点滴,记录琐碎的类的语法或注意事项
- 如何在字段重复的记录里找出单一的记录
- 选出没有相同字段(goods字段)值的记录,并按照时间倒序排列
- 关于sap的字段和对象修改记录的查找
- SQLSERVER2000中比较两个字段的记录存在包含关系的问题
- 资料库字段存储文件记录的方式