ste*_*cob 1 unix bash shell awk sed
我有一个CSV文件,其中每列包含在实际值之前添加的不必要的额外空格.我想删除所有空格来创建一个新的CSV文件.
例如
输入CSV文件中的一行
123, ste hen, 456, out put
Run Code Online (Sandbox Code Playgroud)
预期的输出CSV文件
123,ste hen,456,out put
Run Code Online (Sandbox Code Playgroud)
我尝试使用awk修剪每一列,但它没有用.
这个sed应该工作:
sed -i.bak -E 's/(^|,)[[:blank:]]+/\1/g; s/[[:blank:]]+(,|$)/\1/g' file.csv
Run Code Online (Sandbox Code Playgroud)
这将删除主要的spa,尾随空格和逗号周围的空格.
更新:这是一个awk命令来做同样的事情:
awk -F '[[:blank:]]*,[[:blank:]]*' -v OFS=, '{
gsub(/^[[:blank:]]+|[[:blank:]]+$/, ""); $1=$1} 1' file
Run Code Online (Sandbox Code Playgroud)
awk 是你的朋友。
输入
$ cat 38609590.txt
Ted Winter, Evelyn Salt, Peabody
Ulrich, Ethan Hunt, Wallace
James Bond, Q, M
(blank line)
Run Code Online (Sandbox Code Playgroud)
脚本
$ awk '/^$/{next}{sub(/^[[:blank:]]*/,"");gsub(/[[:blank:]]*,[[:blank:]]*/,",")}1' 38609590.txt
Run Code Online (Sandbox Code Playgroud)
输出
Ted Winter,Evelyn Salt,Peabody
Ulrich,Ethan Hunt,Wallace
James Bond,Q,M
Run Code Online (Sandbox Code Playgroud)
笔记
/^$/{next}。