使用命令行删除逗号前后的空格(不是单词之间的空格)

use*_*114 1 regex csv sed

我有一个使用 创建的 CSV 文件pull_data $a $b > $id.csv

输出中的一行的示例是:

1041894,30/01/2013,31/01/2013,A Customer Limited , 2, 1,PR14, PR14 , 104 An Item ,247 An Item
Run Code Online (Sandbox Code Playgroud)

这是我的条件:

  • 我需要删除逗号之后或之前的所有空格,但排除单词之间的空格。

  • 我需要每一行如下所示,并且如果可能的话希望使用 sed:

1041894,30/01/2013,31/01/2013,A Customer Limited,2,1,PR14,PR14,104 An Item,247 An Item

我已经尝试过了sed 's/, \+\| \+,/,/g',但这并没有删除逗号前后的所有空格,它只删除了一些空格。

anu*_*ava 5

试试这个 sed:

sed -i.bak -e 's/,[[:space:]]\+/,/g' -e 's/[[:space:]]\+,/,/g' file
Run Code Online (Sandbox Code Playgroud)

或者这个 awk:

awk -F '[[:space:]]*,[[:space:]]*' '{$1=$1}1' OFS=, file
Run Code Online (Sandbox Code Playgroud)

更新:

OP 可能有空格而不仅仅是空格:

也试试这个 sed:

sed -i.bak 's/[[:space:]]*,[[:space:]]*/,/g' file
Run Code Online (Sandbox Code Playgroud)