sed - 使用 SED 替换 csv 文件中的前导和尾随 spces
问题描述
我正在使用以下命令从文件 A.csv 中删除前导和尾随空格
sed "s/^ \+//g;s/[ \t]*$//;s/ \{1,\}/ /g" <A.csv> B.csv
这是 A.csv 的示例
"a"," v b","z"
"a"," vd","z"
"a"," v, b, c ","z "
"a"," vb ","z "
问题是并非所有前导和尾随空格都被删除,如下所示:
"a"," v b","z"
"a"," vd","z"
"a"," v, b, c ","z "
"a"," vb ","z "
下面是我所期待的一个例子:
"a","v b","z"
"a","vd","z"
"a","v, b, c","z"
"a","vb","z"
我怎样才能做到这一点?
解决方案
sed 's/" \+/"/g;s/[ \t]*"/"/g;s/ \{1,\}/ /g' A.csv
输出:
"a","v b","z"
"a","vd","z"
"a","v, b, c","z"
"a","vb","z"
你自己的命令,只有s/ \{1,\}/ /g
在工作。
问题是,sed 会将 csv 文件视为简单的文本文件,而不知道逗号和引号用于列。
所以^
and$
只会匹配每行的开头和结尾。
你也忘了把g
第二个s
。
推荐阅读
- c# - 实体框架不播种实体关系
- java - 使用 LIKE % 的 HQL 查询无法正常工作
- javascript - 使用动态变量访问javascript对象中的第n级嵌套属性
- python - 元组中的 max 函数如何工作?
- r - 基于R中列内因子水平的分层偏好的子集数据框
- vb.net - 如何从访问数据库中获取具有数量的畅销产品并显示在标签上
- php - 参数太少,0 通过
- javascript - React Hooks:setState,什么时候真正生效?
- amazon-web-services - 特定区域的 aws 上出现 504 网关超时错误
- python - 在保留索引的同时对 Pandas DataFrame 中的行进行改组