次の形式のCSVファイルが複数あります。
"TIMESTAMP",col2,col3,col4
"yyyy-mm-dd HH:mm",20,19,17
私は最終的に次のように-
交換したいと思います。/
TIMESTAMP,col2,col3,col4
yyyy/mm/dd HH:mm,20,19,17
次のコマンドを使用してファイルを添付しましたが、何も起こりません。
find -name '*.csv' -exec awk '{gsub(/-/, "/",$1)}' '{}' \;
私は何を見逃していますか?助けてください
ベストアンサー1
find . -name '*.csv' -type f -size +10c -exec perl -pi -e '
s{^(\d\d\d\d)-(\d\d)-(\d\d)\b}{$1/$2/$3}' {} +
-
行の先頭のタイムスタンプのsだけが置き換えられ、他のすべての-
イベントは無視されます。
.csv
そのタイムスタンプを含まないファイルも含め、すべてのファイルを置き換えます。これを防ぐには、GNUを使用してgrep
次のことを実行できます。
grep -rlPZ --include='*.csv' '^\d\d\d\d-\d\d-\d\d\b' . |
xargs -r0 perl -pi -e '
s{^(\d\d\d\d)-(\d\d)-(\d\d)\b}{$1/$2/$3}' {} +