各行ごとにパイプで区切られたファイルを使用して、UNIXファイルで次のことを行う方法を探していますが、どこから始めるべきかわかりません。
- テキスト行で文字を検索する(GREPと仮定?)
- 見つかった場合は、行の末尾にテキストを追加します(SEDを使用しますか?)。
- 見つからない場合は、同じ行で別の文字を探します。
- 見つかった場合は行の末尾にテキストを追加し、そうでなければ何もしません。
- ファイルのすべての行を繰り返します。
どんなアドバイスも本当にありがとうございます。
ベストアンサー1
それがすべてですsed
。追加のツールは必要ありません。
foo
aを含む行の末尾に追加し、aを含む行の最後に追加したいとしますf
。bar
f
b
sed '/f/{
s/$/foo/
b
}
/b/s/$/bar/'
/pattern/
そのパターンが含まれている場合にのみ、次のコマンドが実行されるように行を「アドレス指定」できます。したがって、例では、f
コマンドグループの置換と実行をトリガーする行を含む行のみが適用されるため、内部の内容はすべてアドレスが一致する場合にのみ適用されます。一致を防ぐには、スクリプトの最後に分岐してください。s
b
{}
b
b
分岐のない他のアプローチ:
sed '/f/s/$/foo/;s/^[^f]*b[^f]*$/&bar/'
練習として、いくつかの知識を持って自分でこれを見つけ、sed
必要なときに使用できますman sed
。