AWK命令不打印文件的所有行

问题描述:

script.shAWK命令不打印文件的所有行

#!/bin/sh 


awk '{if ($1=="%%Page:" && $2=="(1)" && $3== "1") {print "%%BeginPageSetup""\n""<<"" ""/Duplex" ;print $0;} 

else if($1=="%%Page:" && $2=="(2)" && $3== "2") {print "%%BeginPageSetup" ;print $0}}' $1 > ss.txt 

input.txt中

vaibhav 
gupta 
%%Page: (1) 1 
vaibhav 
gupta 
%%Page: (2) 2 
vaibhav 

运行:

./script.sh input.text 

输出:

%%BeginPageSetup 
<< /Duplex 
%%Page: (1) 1 
%%BeginPageSetup 
%%Page: (2) 2 

输出应该

vaibhav 
gupta 
%%BeginPageSetup 
<< /Duplex 
%%Page: (1) 1 
vaibhav 
gupta 
%%BeginPageSetup 
vaibhav 

像上面。

+1

请先格式化您的代码。 – user1056837

+0

请阅读[在什么情况下我可以在我的问题中添加“紧急”或其他类似的短语,以获得更快的答案?](https://meta.stackoverflow.com/q/326569) - 摘要是这样的并不是解决志愿者问题的理想方式,而且可能对获得答案产生反作用。请不要将这添加到您的问题。 – halfer

它打印你这AKS打印:

if ($1=="%%Page:" && $2=="(1)" && $3== "1") ... 
else if($1=="%%Page:" && $2=="(2)" && $3== "2") ... 

“如果第一场是%%Page:和第二和第三个字段是(1)1(2)2”。

貌似这个垃圾:

ffjfjfjfjfjdrrr 
gghhhhhh 

dhjdfhjfhjfdhj 
errrrrrrrre 

ryryryryryryry 

分类到关你编码的要求。

为了得到您的预期输出,请在:}' $1 > ss.txt之前添加如下内容:else print

+0

我需要下面的输出,请建议如何得到它 ffjfjfjfjfjdrrr gghhhhhh “%% BeginPageSetup” “\ n” “> ”“ ”“ setpagedevice ”“ \ n ”个“ %% EndPageSetup ”“ \ n” 个 %%页:(1)1个 dhjdfhjfhjfdhj errrrrrrrre “%% BeginPageSetup” % (2)2 ryryryryryryry – Vibhu

+0

请把这个额外的要求,原来的文章,它真的是难以理解的评论领域,因为它缺乏所有换行符。 –

+0

抱歉不便:网站是制约我发布新问题 我只是想在下面的输出文件也行除了我满足条件 ffjfjfjfjfjdrrr gghhhhhh dhjdfhjfhjfdhj errrrrrrrre ryryryryryryry – Vibhu