「sed」がファイルの長さを拡張しないのはなぜですか? [閉鎖]

「sed」がファイルの長さを拡張しないのはなぜですか? [閉鎖]

次の行を含むファイルが提供されます。

 1. 1
 2. 2
 3. 3
 4. 4
 5. 5

「sed」コマンドを実行します。

sed -i "/4/a\text\" filename.txt

ファイルは次のようになります。

 1. 1
 2. 2
 3. 3
 4. text
 5. 4

今、「5」を表す行が消えました。

ファイルの行数が変更されていないかのように、最後の行が遅れているようです。

私が実行したコマンドは、「所定の位置に挿入」を意味する「-i」フラグを使用しませんでした。

sed "/3/a\text\" filename.txt > temp.txt; mv temp.txt filename.txt;

ただし、「in-place」フラグが指定されていない場合でも、同じ効果が表示されます。これが'sedの意図された機能ですか?行を追加する方法はありますか?

ベストアンサー1

テキスト行を追加するには、簡単な引用符を使用できます。

例:

[root@h2g2w ~]# sed -i '/4/a\text\' toto    
[root@h2g2w ~]# cat toto                    
1                                           
2
3
4
text
5
[root@h2g2w ~]#

これもうまくいきます...使用しているsedのバージョンはGnuのバージョンですか?二重引用符も機能します(ただし、ここで使用するのはユーザーエラーです)。

[root@h2g2w ~]# sed -i "/4/a\text\ " toto
[root@h2g2w ~]# cat toto
1
2
3
4
text
text
5
[root@h2g2w ~]#

おすすめ記事