|
发表于 2005-2-11 20:45:42
|
显示全部楼层
Post by i-linux
原来将 '/^2/' 改为 '/^\n2/' 即可。因为“."为记录分隔符,所以第二条记录实际上是"\n2,\nB”。而第一条记录前面没有"\n",所以要用‘/^1/'。awk的主输入循环大概是对每一条记录进行读取并操作。默认的记录分隔符为
“\n",所以平时老以为awk是对每个输入行进行操作。
但是 awk ‘/^\n2/ { print $1, $2 }' RS=. test , 并没有出现我料想的:
此处为一回车
2紧跟一个空格和回车
此处为一回车
B
而是:
2,紧跟一个空格B
原因在于:”," 不是默认的FS,当 RS="." 时, 默认的FS是“\n","\n"之间的内容为一个字段(除了第一个记录)。
至于平时常见的默认FS由空格变为换行符,就不知道为什么了。待高人明示。
awk以一行为一个record,pattern加上^限定了首字,可以这样。
BEGIN {
FS=","
RS=".\n"
}
/^[1-3]/ {print $1" "$2}
或把test改为一行一个record. |
|