名前が2行のファイルがあるとしましょう。ファイル.txt:
Row 1: 80 is a nice number
Row 2: 80 is a cool number
Row 3: 80 is a piquant number
Row 4: 80 is a sexy number
私はこれをしましたが、sed -i 's/80/8080/g'
誤って2回実行し、すべての行の結果80808080
は8080
。
sed
おそらく一般的な技術では不可能だと思いますが、ファイルに一度だけ影響を与えるための洗練された方法があるかどうか尋ねたいと思います。私はsed
、ロックを削除するまでファイル内でこれを何度も実行するなどのエラーを回避するための一種の「ロック」を意味します。これは長い行、特に多数の行を処理するのに役立ちます(「おそらく」という言葉を強調します)。
このようなエラーを避ける必要があるのは実際には質問ではなく、それがすべてです。しかし、このようなエラーを避けるために技術的な「防御メカニズム」を開発しようとした人がいるかどうか疑問に思いますsed
。
awk
注:同様の解決策がユーザーにも役立つと思います。
ベストアンサー1
これはあまり複雑ではありませんが、文字列を自分自身を含む文字列に置き換えるときに繰り返される置換を防ぐために、前および/または次の文字が追加される防御メカニズムです。
上記の例に基づいて、次のいずれか(またはその両方)をお勧めします。
sed -i 's/ 80 / 8080 /g'
sed -i 's/^80 /8080 /g'
また注意してください-i
:)