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即在每列分隔符改成“;”