|
|
|
|
| 急:solaris2.8下awk和gnu 下的awk执行结果不一样,为什么? |
|
|
|
[Original]
[Print]
[Top]
|
急:solaris2.8下awk和gnu 下的awk执行结果不一样,为什么?
问题:awk如何将数据每两个空行做为分隔,然后处理分隔后的信息块。
数据文件如下:
$ more t.txt
* ALARM 111111111
abcde
CLR ALARM 222222222
3333333333
444444444
555555555
** ALARM666666666
777777777
888888888
ALARM999999999
脚本如下:
$ more cu2.sh
input=$1
awk 'BEGIN{RS="
";FS="
";OFS=" "}{$1=$1;print $0 }' $input|awk '/ALARM/'| grep -v '^CLR'
在solaris2.8或者2.5版本运行得到以下结果:
$ cu2.sh t.txt
* ALARM 111111111
** ALARM666666666
ALARM999999999
$
在gnu下的awk(其他的linux也是)如下:
$ cu2.sh t.txt
* ALARM 111111111 abcde
** ALARM666666666 777777777 888888888
ALARM999999999
q3283c@tools-test2 /cygdrive/c/temp/shell
$
请教各位大侠,怎么能改成gnu那样的输出结果那。两个程序都没有错误,但是sun的结果不对。
|
|
|
[Original]
[Print]
[Top]
|
|
|