UNIXで他の行数の後に空白行を挿入する

UNIXで他の行数の後に空白行を挿入する

次のデータを含むabc.csvファイルがあるとします。

abc
def
geh
ijk
lmn
opq
rst

それでは、2行と6行の後に空の行を挿入したいと思います。

どの命令を使用すべきかをお勧めします。

答え1

$ seq 10 | sed '2G;6G'
1
2

3
4
5
6

7
8
9
10

このG sedコマンドは、パターンスペースに改行文字と予約済みスペース(何も入れていないため空)を追加します。したがって、これは一致する行の下に空の行を追加する簡単な方法です。

もう一つの選択肢はaandsコマンドです:

sed '2a\

6a\
'

または:

sed '2s/$/\
/
6s/$/\
/'

一部のsed実装では、以下もサポートしています。

sed '2s/$/\n/;6s/$/\n/'

答え2

sed -e '2a\ ' -e '6a\ ' input > output && mv output input

一部のsed(1)バージョンには、「in-place」(これは移植可能ではありません)ファイルで動作するか、またはmoreutilsで実行しようとするオプションがありますが、どちらの方法も新しいファイルへの書き込みを非表示にするだけです-i。呼び出し(出力ファイルが同じファイルシステムにある場合)spongerename(2)mv

答え3

これは働きます:

awk 'NR==3||NR==7 {print " "} {print $0}' abc.csv > temporary.csv && mv temporary.csv abc.csv

答え4

ExモードでVimを使用できます。

ex -sc '6pu_|2pu_|x' abc.csv
  1. pu_空行を追加

  2. x保存して閉じる

関連情報