awk命令RS FS ORS OFS的区别

来源:互联网 发布:网络的利与弊作文1000 编辑:程序博客网 时间:2024/06/11 22:00


awk 认为文件中的每一行是一条记录 记录与记录的分隔符为换行符

 
                每一列是一个字段 字段与字段的分隔符默认为空格


RS为输入记录分隔符(行分隔符)
FS为输入字段分隔符号(列分隔符)
ORS、OFS为相对应的输出分隔符O=out嘛


举例:
cat abc.txt
RealMan hsss
123*cccc
12345678
beijing


awk 'BEGIN{RS=""}{print $0}' abc.txt
RealMan hsss
123*cccc
12345678
beijing
因为已经从新分割换行了,所有$0是错误的,所有会打印所有原来的格式


awk 'BEGIN{RS=""}{print $1,$2,$3,$4}' abc.txt


RealMan hsss\n
123*cccc\n 
12345678\n     >>>>>>>>>>             RealMan hsss 123*cccc 12345678
beijing\n                                   


因为原来的文本里第一行有空格,而FS默认是FS=“”分割的,所以$1是RealMan,$2是hsss


awk 'BEGIN{RS="";FS="\n"}{print $1,$2,$3,$4}' abc.txt
RealMan hsss 123*cccc 12345678 beijing
行以“”分割,列以原来的“\n”分割


awk 'BEGIN{RS="";FS="\n";ORS="***"}{print $1,$2,$3,$4}' abc.txt
RealMan hsss 123*cccc 12345678 beijing***
ORS即在行尾把“\n”改成***


awk 'BEGIN{RS="";FS="\n";ORS="***";OFS=";"}{print $1,$2,$3,$4}' abc.txt
RealMan hsss;123*cccc;12345678;beijing***

OFS即在每列分隔符改成“;”



















0 0
原创粉丝点击