使用 AWK 或 sed 批量覆盖 .csv 文件

使用 AWK 或 sed 批量覆盖 .csv 文件

我有一个包含许多子目录的目录,这些子目录都充满了 .csv 文件(没有其他扩展名的文件)。

我想.csv用 sed/AWK 命令一次性覆盖所有文件。如果目录结构不改变,将所有内容移动到另一个方向也很好。

我使用的命令是:

  1. $ awk 'BEGIN{FS=OFS=","} {sub("^([^/:]+://)?(www[.])?","",$1); sub("/.*","",$1)} 1' input_file
  2. $ sed -E 's~(^[^/]*//)?(w+\.)?([^/]*)[^,]*~\3~' input_file
  3. $ sed -E 's#^(.*://)?(www\.)?##; s#^([^,/]+)[^,]*#\1#' input_file

如何一次编辑所有文件而不是逐个文件

答案1

使用 GNU awk:

find . -type f -name '*.csv' -exec awk -i inplace 'script' {} +

使用 GNU sed:

find . -type f -name '*.csv' -exec sed -i -E 'script' +

相关内容