awk實例一

如何將(1.sh):

#vi 1.sh

#

1

2

3

#

4

5

#

6

7

8

輸出為(情況1):

123

45

678

輸出為(情況2):

1,2,3

4,5

6,7,8

 

 

方法1.         awk -v RS=# 'NF{for(i=1;i<=NF;i++)if($i) printf $i;print ""}'  1.sh              注:RS為行分格符

方法2.         awk 'BEGIN{RS="#";FS="/n";OFS=""}{$1=$1}1'  1.sh                             注:紅色1可以做以下理解:

                                       一般awk的格式是这样的:awk 'pattern{action}' file
                                        如果写成awk 'pattern' file,那么action默认为{print $0};
                                        pattern如果是个定值,则判断该值是否为0(0为false,非0为true);
                                        pattern如果是个计算表达式,则判断计算结果是否为0;
                                        pattern如果是个awk 命令,则判断其返回值

                                        这样就能理解awk '1' file的意义了:
                                        在这里action为空,因此默认为{print $0};1为定值,非0,因此执行action,即print $0。

方法3(情況2).     awk -v RS=# 'NF{for(i=1;i<=NF;i++)if($i) printf (i>1?",":"")$i;print ""}' 1.sh     

方法4(情況2)              awk 'BEGIN{RS="#";OFS=","}NF{NF+=0;print}' 1.sh

方法5(情況2)                     awk 'BEGIN{RS="#";OFS=","}NF+=0'  1.sh

你可能感兴趣的:(awk實例一)