Unixで1行ずつ修正

Unixで1行ずつ修正

各行ごとにパイプで区切られたファイルを使用して、UNIXファイルで次のことを行う方法を探していますが、どこから始めるべきかわかりません。

  1. テキスト行で文字を検索する(GREPと仮定?)
  2. 見つかった場合は、行の末尾にテキストを追加します(SEDを使用しますか?)。
  3. 見つからない場合は、同じ行で別の文字を探します。
  4. 見つかった場合は行の末尾にテキストを追加し、そうでなければ何もしません。
  5. ファイルのすべての行を繰り返します。

どんなアドバイスも本当にありがとうございます。

ベストアンサー1

それがすべてですsed。追加のツールは必要ありません。

fooaを含む行の末尾に追加し、aを含む行の最後に追加したいとしますfbarfb

sed '/f/{
  s/$/foo/
  b
  }
/b/s/$/bar/'

/pattern/そのパターンが含まれている場合にのみ、次のコマンドが実行されるように行を「アドレス指定」できます。したがって、例では、fコマンドグループの置換と実行をトリガーする行を含む行のみが適用されるため、内部の内容はすべてアドレスが一致する場合にのみ適用されます。一致を防ぐには、スクリプトの最後に分岐してください。sb{}bb

分岐のない他のアプローチ:

sed '/f/s/$/foo/;s/^[^f]*b[^f]*$/&bar/'

練習として、いくつかの知識を持って自分でこれを見つけ、sed必要なときに使用できますman sed

おすすめ記事