ファイル名のリストを含むファイルの「_」を「、」に置き換えます。

ファイル名のリストを含むファイルの「_」を「、」に置き換えます。


誰かが次の要件を満たすシェルスクリプトを書くのに役立つことができれば役に立ちます。

次のファイル名のリストを含むテキストファイルがあります。

ADB_AR_2006_07.pdf
ADBL_AR_2010_11.pdf
CBL_AR_2013_14.pdf
CZBIL_AR_2007_08.pdf
BOKL_AR_2015_16.pdf
..
..

ここで、テキストファイルにリストされているすべてのファイル名の最初と2番目の「_」を「、」に置き換えたいと思います。その後、ファイル名は次のようになります。

ADB,AR,2006_07.pdf
ADBL,AR,2010_11.pdf
CBL,AR,2013_14.pdf
CZBIL,AR,2007_08.pdf
BOKL,AR,2015_16.pdf
..
..

ベストアンサー1

簡単に使えますsed表現する:

sed -Ei 's/^([^_]+)_([^_]+)_/\1,\2,/' file

file修正内容:

ADB,AR,2006_07.pdf
ADBL,AR,2010_11.pdf
CBL,AR,2013_14.pdf
CZBIL,AR,2007_08.pdf
BOKL,AR,2015_16.pdf

  • i- 内部ファイルの変更を許可

  • -E- 拡張正規表現を許可


単純化されたアプローチは次のとおりです。

sed -i 's/_/,/; s/_/,/' file

おすすめ記事