ファイル内のsedを使用して実行された代替数を計算して返します。

ファイル内のsedを使用して実行された代替数を計算して返します。

大きなJSONファイルがあり、ある文字列を別の文字列に置き換えたいと思います。そうしてはいけませんが、文字列を変更したくない状況で文字列を使用することが可能かもしれません。

正しいコンテキストでは、ファイル内でその文字列が何回発生するかを知っているので、その文字列がに置き換えられる回数も印刷したいと思いますsed。どうすればいいですか?

文字列を見つけて置き換えるには、次のようにします。

sed -i "" "s/my_string/new_string/g" my_file.json

私はMacを使用していますが、Linuxも必要です。たとえば、次のようになります。

sed -i "s/my_string/new_string/g" my_file.json

私はaを実行してgrepファイル内の文字列を見つけ、次のように数を返すことができることを知っています。

grep -o my_string my_file.json | wc -l

しかし、それは私が尋ねるものではありません。テキストエディタ(単語、メモ帳、geanyなど)のように実行できる方法があるかどうかを尋ねています。文字列を与えると、この文字列を表示して置き換えた回数を知らせます。一つ。

追加情報 - Bashスクリプトで実行されるため、他のより良い方法がある場合は開いています。

ベストアンサー1

ただperl代わりに使用してください。これはand代替演算子と同じく移植可能でありsed(この場合、構文はインストールされているperlすべてのシステムで同じであるため、移植性が高くなります)、-i代替数を印刷するように指示できます。

perl -i  -lpe '$k+= s/my_string/new_string/g; END{print "$k"}' my_file.json

これにより交換操作が実行され、交換番号が標準出力として印刷されます。

おすすめ記事