如何删除word和spefic令牌之间的空格?

时间:2018-01-15 11:39:49

标签: awk sed

我想清理看起来像这样的代码。

for(i=0; i < max; i++){
    test = 5 + test                     ;
    if (test == 10)
         printf("HELLO WORLD\n")          ;
}

如何删除“test”和“;”之间的空格没有去格式化其他行?

编辑:我还想在分号之前删除所有其他空格。

我尝试过这个:

sed 's/;.*$/;/p' $FILE

但它也会从行的开头删除空格,直到第一个单词。

我更喜欢使用awk或sed之类的答案。 感谢。

2 个答案:

答案 0 :(得分:5)

这将删除行末sed 's/[[:blank:]]*;$/;/' file.c 之前的所有空白字符(空格或制表符):

printf

我假设您还希望删除toolbar行上分号前的空格。

答案 1 :(得分:1)

删除&#34; test&#34;之间的空格和&#34;;&#34;没有使用awk

去格式化其他行
$ awk '{sub(/test +;/,"test;")}1' file
for(i=0; i < max; i++){
    test = 5 + test;
    if (test == 10)
         printf("HELLO WORLD\n")          ;
}

如果test +;出现在该行末尾的其他位置,则可能会进入正则表达式:/test +; *$/

修改使用awk删除;之前(以及之后)的所有空格:

$ awk '{sub(/ +; *$/,";")}1' file
for(i=0; i < max; i++){
    test = 5 + test;
    if (test == 10)
         printf("HELLO WORLD\n");
}