ファイル内のフィールドを識別する必要があります。フィールドが見つかったら、新しい行を追加してテキストを追加する必要があります。しかし、見つかった単語の前のスペースの数を計算して、そのスペースの数に追加のスペースを2つ追加した後に新しい行を追加できるようにしたいと思います。例えば
入力ファイル:
<tt:abcdef>
.
.
.
</tt:abcdef>
上記の入力ファイルには以前に2つのスペースがあり、<tt:abcdef>
このスペースを計算してから、次のように新しい行を作成したいと思います。
期待される出力ファイル:
<tt:abcdef>
<tt:newvar>
.
.
.
</tt:abcdef>
ベストアンサー1
入力が示されているように単純で規則的で、xmlstarletなどをインストールできない場合、またはインストールできない場合は、すべてのUnixシステムのすべてのシェルでawkを使用できます。
$ awk '{print} sub(/<tt:abcdef>/," "){print $0 "<tt:newvar>"}' file
<tt:abcdef>
<tt:newvar>
.
.
.
</tt:abcdef>
上記のコードは、空白を計算せずに一致する行にある先行スペースを再利用します。これは強力ではなく、提供された入力を提供された出力に変更することです。さらに必要な場合は、質問を編集して、より代表的な入力/出力の例と要件のより良い説明を提供してください。