通过 shell 脚本删除文件中的空格
Remove spaces in file through shell script
我有一个 psv 文件,其中包含如下记录:
Apple | Banana | I want to eat banana | Carrot
如您所见,所有列都包含前导空格和尾随空格
我使用了这个命令:
sed -i -r 's/\s+//g;/^$/d' fileName
删除空格和空行。之后我得到的结果是:
Apple|Banana|Iwanttoeatbanana|Carrot
我的预期结果有点像这样:
Apple|Banana|I want to eat banana|Carrot
请帮助我使用 shell 脚本获得所需的结果。
提前致谢!
你可以使用这个 sed
:
sed -E 's/^[[:blank:]]+|[[:blank:]]*(\|)[[:blank:]]*|[[:blank:]]+$//g' file
Apple|Banana|I want to eat banana|Carrot
解释:
^[[:blank:]]+
: 开始后匹配1个或多个空格
|
: 或
[[:blank:]]*(\|)[[:blank:]]*
:在|
前后匹配0个或多个空格并捕获组#1 中的|
|
: 或
[[:blank:]]+$
: 匹配 end 前的 1 个或多个空格
Replacement is a
\1` 将第 1 组的捕获值替换为
一个awk
解决方案:
awk -F '[[:blank:]]*\|[[:blank:]]*' -v OFS='|' '{
gsub(/^[[:blank:]]+|[[:blank:]]+$/, ""); =} 1' file
Apple|Banana|I want to eat banana|Carrot
我有一个 psv 文件,其中包含如下记录:
Apple | Banana | I want to eat banana | Carrot
如您所见,所有列都包含前导空格和尾随空格 我使用了这个命令:
sed -i -r 's/\s+//g;/^$/d' fileName
删除空格和空行。之后我得到的结果是:
Apple|Banana|Iwanttoeatbanana|Carrot
我的预期结果有点像这样:
Apple|Banana|I want to eat banana|Carrot
请帮助我使用 shell 脚本获得所需的结果。
提前致谢!
你可以使用这个 sed
:
sed -E 's/^[[:blank:]]+|[[:blank:]]*(\|)[[:blank:]]*|[[:blank:]]+$//g' file
Apple|Banana|I want to eat banana|Carrot
解释:
^[[:blank:]]+
: 开始后匹配1个或多个空格|
: 或[[:blank:]]*(\|)[[:blank:]]*
:在|
前后匹配0个或多个空格并捕获组#1 中的|
: 或[[:blank:]]+$
: 匹配 end 前的 1 个或多个空格
Replacement is a
\1` 将第 1 组的捕获值替换为
|
一个awk
解决方案:
awk -F '[[:blank:]]*\|[[:blank:]]*' -v OFS='|' '{
gsub(/^[[:blank:]]+|[[:blank:]]+$/, ""); =} 1' file
Apple|Banana|I want to eat banana|Carrot