2017-09-06 13 views
1

誰かが私を助けてくれることを願っています。新しい行を特定の行に追加する

私は、異なる行数のファイルが多数あります。私は特定の行までのファイルに新しい行を追加したい は、6

Infile.txtが

text1 
text2 
text3 

私が持っているしたいと思いますアウトファイルが

Outfile.txtをと言います

のawkの ENDブロックで
text1 
text2 
text3 
\n 
\n 
\n 
+0

行数と内容に関係なく、空の行を6行追加する必要がありますか?またはそうすることに何らかの論理がありますか? – SriniV

答えて

3

ショートawkのソリューション:

awk -v r=6 'END{ while((r--)-NR>0) print "" }1' file 
  • -v r=6 - 行
+0

おそらくデータについては確かに問題はありませんが、必要な数以上のデータファイルがあることに注意してください。whileループは無限になります。 ( '(r - ) - NR> 0'を比較する方が良いかもしれません) – jas

+0

@jas、その場合 - はい、編集、ありがとう – RomanPerekhrest

1

、組み込み変数NRファイルの最後の行の行番号が含まれています。そこから、必要な数の追加の空の行を簡単に印刷できます。

$ awk -v lines=6 '1; END {for (i=NR; i<lines; ++i) print ""}' file 
text1 
text2 
text3 



$ awk -v lines=6 '1; END {for (i=NR; i<lines; ++i) print ""}' file | wc -l 
6 
1

IMHOの最大/合計数を示す変数r処理するための明確な、最も明白な方法これは単にループからですラインの目標数への最後の行番号を加えた1:あなたは、変数を保存したい場合は

$ seq 3 | awk -v n=6 '{print} END{for (i=NR+1; i<=n; i++) print ""}' 
1 
2 
3 



$ 

また、カウントダウンすることができます

$ seq 3 | awk -v n=6 '{print} END{while (n-- > NR) print ""}' 
1 
2 
3 



$ 

が、それは簡潔に賛成して明瞭性を犠牲にするだ私見と価値がない。

関連する問題