Trim Linux 中 csv 文件字段的前导空格
Trim leading whitespace from fields in csv file in Linux
我只想 trim 看起来像这样的 csv 文件中的前导白色spaces:
thing1,thing2, thing something3,thing4
thing11,thing12, thing something13,thing14
etc.
(注意:我想将 space 保留在 thing
和 something3
之间)
所以我的输出是这样的:
thing1,thing2,thing something3,thing4
thing11,thing12,thing something13,thing14
我已经尝试使用 awk '{=};1' file
和我通过快速 google 搜索找到的其他十几个解决方案,但在我的情况下,这些解决方案通常要么冻结,要么什么都不做。
希望有人能帮帮我,干杯!
sed 's/,[[:blank:]]*/,/g' file
示例:
> cat test.txt
thing1,thing2, thing something3,thing4
thing12,thing12, thing something13,thing14
> cat test.txt | sed 's/,[[:blank:]]*/,/g'
thing1,thing2,thing something3,thing4
thing12,thing12,thing something13,thing14
有:
cat file
thing1,thing2, thing something3,thing4
thing12,thing12, thing something13,thing14
在 awk 中,您可以处理未引用的 csv 并删除尾随 space,如下所示:
awk 'BEGIN{FS=",[[:space:]]*"; OFS=","}
{=}1' file
打印:
thing1,thing2,thing something3,thing4
thing11,thing12,thing something13,thing14
假设您引用了 csv,并且您只想更改 csv 分隔符 -- 而不是引用字段中的嵌入式逗号,您应该使用 csv 解析器。
鉴于:
cat file
thing1,thing2, thing something3,"thing4, and 5"
thing11,thing12, thing something13,thing14
命令行中的最简单 csv 解析器是ruby
:
ruby -r CSV -e 'CSV.parse($<.read).each{|l| puts l.map(&:lstrip).to_csv}' file
打印:
thing1,thing2,thing something3,"thing4, and 5"
thing11,thing12,thing something13,thing14
还可以用 awk
测试一下:
awk 'gsub(/, */, ",") 1' file
thing1,thing2,thing something3,thing4
thing12,thing12,thing something13,thing14
我只想 trim 看起来像这样的 csv 文件中的前导白色spaces:
thing1,thing2, thing something3,thing4
thing11,thing12, thing something13,thing14
etc.
(注意:我想将 space 保留在 thing
和 something3
之间)
所以我的输出是这样的:
thing1,thing2,thing something3,thing4
thing11,thing12,thing something13,thing14
我已经尝试使用 awk '{=};1' file
和我通过快速 google 搜索找到的其他十几个解决方案,但在我的情况下,这些解决方案通常要么冻结,要么什么都不做。
希望有人能帮帮我,干杯!
sed 's/,[[:blank:]]*/,/g' file
示例:
> cat test.txt
thing1,thing2, thing something3,thing4
thing12,thing12, thing something13,thing14
> cat test.txt | sed 's/,[[:blank:]]*/,/g'
thing1,thing2,thing something3,thing4
thing12,thing12,thing something13,thing14
有:
cat file
thing1,thing2, thing something3,thing4
thing12,thing12, thing something13,thing14
在 awk 中,您可以处理未引用的 csv 并删除尾随 space,如下所示:
awk 'BEGIN{FS=",[[:space:]]*"; OFS=","}
{=}1' file
打印:
thing1,thing2,thing something3,thing4
thing11,thing12,thing something13,thing14
假设您引用了 csv,并且您只想更改 csv 分隔符 -- 而不是引用字段中的嵌入式逗号,您应该使用 csv 解析器。
鉴于:
cat file
thing1,thing2, thing something3,"thing4, and 5"
thing11,thing12, thing something13,thing14
命令行中的最简单 csv 解析器是ruby
:
ruby -r CSV -e 'CSV.parse($<.read).each{|l| puts l.map(&:lstrip).to_csv}' file
打印:
thing1,thing2,thing something3,"thing4, and 5"
thing11,thing12,thing something13,thing14
还可以用 awk
测试一下:
awk 'gsub(/, */, ",") 1' file
thing1,thing2,thing something3,thing4
thing12,thing12,thing something13,thing14