【发布时间】:2018-04-19 05:10:28
【问题描述】:
我正在尝试通过删除不必要的空格、空行以及括号与它们之间的空格来平衡我的代码,所以:
int a = 4;
if ((a==4) || (b==5))
a++ ;
应该改为:
int a = 4;
if ( (a==4) || (b==5) )
a++ ;
它确实适用于括号和空行。但是,它忘记了将多个空格减少到一个空格:
int a = 4;
if ( (a==4) || (b==5) )
a++ ;
这是我的脚本:
#!/bin/bash
# Script to refine code
#
filename=read.txt
sed 's/((/( (/g' $filename > new.txt
mv new.txt $filename
sed 's/))/) )/g' $filename > new.txt
mv new.txt $filename
sed 's/ +/ /g' $filename > new.txt
mv new.txt $filename
sed '/^$/d' $filename > new.txt
mv new.txt $filename
另外,有没有办法让这个脚本更简洁,例如删除或减少命令数量?
【问题讨论】:
-
顺便说一下,在 BRE 中你可以使用
\{1,\}代替+ -
@cdarke,我不明白,这也给你多个空格吗?
-
/ \{1,\}/表示“一个或多个空格”,是的。 -
@cdarke 你的回答很棒。我编辑了接受的答案以包含您的有用评论!