テキストファイルはyyyy/mm/ddを検索してyyyy-mm-ddに置き換えます。

テキストファイルはyyyy/mm/ddを検索してyyyy-mm-ddに置き換えます。

次の行形式の複数のタグを含むファイルがありますが、1つのファイル内のすべてのインスタンスで指定されているようにyyyy/mm/ddタグを変更したいと思います。例えば/-yyyy-mm-dd

これから:<tag k='start_date' v='2011/01/01' />
これまで:<tag k='start_date' v='2011-01-01' />

Mac 10.11.6を使用しています。

答え1

sedあなたはそれを使用することができます

$ sed -E 's|([0-9]{4})/([0-9]{2})/([0-9]{2})|\1-\2-\3|g' file

試してみてください。

macOSまたはFreeBSDを使用してファイルを内部で編集するには、-i ''オプションを追加します。他のほとんどのsed実装には-i別々の実装が必要です(両方とも-i.back機能し、.back拡張機能を使用して元のバージョンを保存します)。sed内部編集をサポートしていないシステムでは、(このようにインスピレーションを与えた)perl -pi -e代わりに使用できます。sed -Esed -i

答え2

申し訳ありません。いいえ。動作しません。テキストは変更されません。

しかし、これは効果がとても良いです...

perl -pi -e 's|([0-9]{4})/([0-9]{2})/([0-9]{2})|\1-\2-\3|g' file

関連情報