特定の行の前のTAB/SPACESの計算

特定の行の前のTAB/SPACESの計算

ファイル内のフィールドを識別する必要があります。フィールドが見つかったら、新しい行を追加してテキストを追加する必要があります。しかし、見つかった単語の前のスペースの数を計算して、そのスペースの数に追加のスペースを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>

上記のコードは、空白を計算せずに一致する行にある先行スペースを再利用します。これは強力ではなく、提供された入力を提供された出力に変更することです。さらに必要な場合は、質問を編集して、より代表的な入力/出力の例と要件のより良い説明を提供してください。

おすすめ記事