gpt4 book ai didi

macos - '+' (one or more occurrences) not working with ' sed'命令

转载 作者:行者123 更新时间:2023-11-29 08:40:24 25 4
gpt4 key购买 nike

我正在尝试通过去除不必要的空格、空行以及括号与它们之间的空格来平衡我的代码,因此:

    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

另外,有没有办法让这个脚本更简洁,例如删除或减少命令的数量?

最佳答案

如果您正在使用 GNU sed 那么您需要使用 sed -r 强制 sed 使用扩展的正则表达式,包括想要的+ 的行为。参见 man sed:

-r, --regexp-extended

use extended regular expressions in the script.

如果您使用的是 OS X sed,这同样适用,但是您需要使用 sed -E:

-E      Interpret regular expressions as extended (modern) regular expressions
rather than basic regular regular expressions (BRE's).

关于macos - '+' (one or more occurrences) not working with ' sed'命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12101440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com