特定の行番号にテキストを挿入する

特定の行番号にテキストを挿入する

行のデータに基づいてテキスト文書の内容を分割するbashスクリプトを作成しています。

元のファイルの内容が次のような場合

01 line
01 line
02 line
02 line

bashを使用してこのファイルの3行目を挿入して生成するにはどうすればよいですか?

01 line
01 line
text to insert
02 line
02 line

私はheredocなどを使って私のスクリプトでこれを行いたいと思います。

#!/bin/bash

vim -e -s ./file.txt <<- HEREDOC
    :3 | startinsert | "text to insert\n"
    :update
    :quit
HEREDOC

上記の方法は間違いなく動作しません。しかし、このbashスクリプトに実装できる提案はありますか?

ベストアンサー1

ex行番号を使用してPOSIXツールを使用できます。

ex a.txt <<eof
3 insert
Sunday
.
xit
eof

または文字列の一致:

ex a.txt <<eof
/Monday/ insert
Sunday
.
xit
eof

https://pubs.opengroup.org/onlinepubs/9699919799/utilities/ex.html

おすすめ記事