誰かが私を助けてくれることを願っています。新しい行を特定の行に追加する
私は、異なる行数のファイルが多数あります。私は特定の行までのファイルに新しい行を追加したい は、6
Infile.txtが
text1
text2
text3
私が持っているしたいと思いますアウトファイルが
Outfile.txtをと言います
のawkのEND
ブロックで
text1
text2
text3
\n
\n
\n
誰かが私を助けてくれることを願っています。新しい行を特定の行に追加する
私は、異なる行数のファイルが多数あります。私は特定の行までのファイルに新しい行を追加したい は、6
Infile.txtが
text1
text2
text3
私が持っているしたいと思いますアウトファイルが
Outfile.txtをと言います
のawkのEND
ブロックで
text1
text2
text3
\n
\n
\n
ショートawkのソリューション:
awk -v r=6 'END{ while((r--)-NR>0) print "" }1' file
-v r=6
- 行おそらくデータについては確かに問題はありませんが、必要な数以上のデータファイルがあることに注意してください。whileループは無限になります。 ( '(r - ) - NR> 0'を比較する方が良いかもしれません) – jas
@jas、その場合 - はい、編集、ありがとう – RomanPerekhrest
、組み込み変数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
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
$
が、それは簡潔に賛成して明瞭性を犠牲にするだ私見と価値がない。
行数と内容に関係なく、空の行を6行追加する必要がありますか?またはそうすることに何らかの論理がありますか? – SriniV