
次のデータを含む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
コマンドは、パターンスペースに改行文字と予約済みスペース(何も入れていないため空)を追加します。したがって、これは一致する行の下に空の行を追加する簡単な方法です。
もう一つの選択肢はa
ands
コマンドです:
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
。呼び出し(出力ファイルが同じファイルシステムにある場合)sponge
rename(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
pu_
空行を追加x
保存して閉じる