我有一个包含超过 500,000 行的 .CSV 文件,我需要:
- 找到所有“空格双引号空格”序列并替换为空
- 找到所有“空格双引号”序列并替换为空
- 找到所有双引号并替换为空
.CSV 行示例:
"DISH Hartford & New Haven (Hartford)", "206", "FBNHD", " 06028", " East Windsor Hill", "CT", "Hartford County"
** 要求的输出**
DISH Hartford & New Haven (Hartford),206,FBNHD,06028,East Windsor Hill,CT,Hartford County
我需要删除所有双引号 ("
) 和逗号前后的空格 (,
)。
我试过了
$ cd /Users/Leonna/Downloads/
$ cat bs-B2Bformat.csv | sed s/ " //g
这给了我比提示更大的“命令不完整”,所以我尝试了:
$ cat bs-B2Bformat.csv | sed s/ " //g
sed: 1: "s/": unterminated substitute pattern
$ cat bs-B2Bformat.csv |sed s/ \" //g
sed: 1: "s/": unterminated substitute pattern
$
我无法在 Excel(Excel 不会加载所有行)甚至文本编辑器中编辑太多行。我该如何解决这个问题?
最佳答案
引自here :
For POSIX compliance, use the character class [[:space:]] instead of \s, since the latter is a GNU sed extension.
基于此,我会提出以下建议,即 Jonathan Leffler指出,可以跨 GNU 和 BSD 实现移植。
sed -E 's/[[:space:]]?"[[:space:]]?//g' <path/to/file>
-E
标志在 BSD 实现上启用扩展正则表达式。在 GNU sed
上它没有记录,但正如所讨论的那样 here , 它可以与 BSD 标准兼容。
-E Interpret regular expressions as extended (modern) regular expressions rather than basic regular expressions (BRE's).
将上述命令应用于包含以下单行的文件
"DISH Hartford & New Haven (Hartford)", "206", "FBNHD", " 06028", " East Windsor Hill", "CT", "Hartford County"
它产生
DISH Hartford & New Haven (Hartford),206,FBNHD,06028,East Windsor Hill,CT,Hartford County
关于macos - 使用 Sed Mac 终端查找并替换为空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18840175/