Bash脚本以查找文件中的括号是否正确关闭
我是一个完全的初学者,所以我有一个愚蠢的问题。假设我有一个方括号.txt文件,它有这样一个字符串,我想写一个脚本,检查是否所有方括号都正确闭合,并且没有太多方括号打印所有内容都正确或类似的内容。例如,每个括号中都有匹配的括号,但它们没有正确闭合。我知道如何查找和计算它们,但检查部分真的让我很烦恼,我将非常感谢您的帮助 这就是逻辑 如果字符串以-开头,则不正确 如果以a开头,则转至3 对于每一个增量,计数器都会说“openBraces”;对于遇到的每个减量,计数器 如果在运行完3之后,上面的“openBraces”计数为0;你所有的牙套都合上了;否则就有问题了 注:“openBraces”的正值表示超过,而“openBraces”的负值表示超过。 希望它能有所帮助,继续移除,直到你不能再移除为止。如果留下任何内容,则输入无效Bash脚本以查找文件中的括号是否正确关闭,bash,shell,matching,brackets,Bash,Shell,Matching,Brackets,我是一个完全的初学者,所以我有一个愚蠢的问题。假设我有一个方括号.txt文件,它有这样一个字符串,我想写一个脚本,检查是否所有方括号都正确闭合,并且没有太多方括号打印所有内容都正确或类似的内容。例如,每个括号中都有匹配的括号,但它们没有正确闭合。我知道如何查找和计算它们,但检查部分真的让我很烦恼,我将非常感谢您的帮助 这就是逻辑 如果字符串以-开头,则不正确 如果以a开头,则转至3 对于每一个增量,计数器都会说“openBraces”;对于遇到的每个减量,计数器 如果在运行完3之后,上面的“op
while [[ $string = *'()'* ]] ; do
string=${string//()/}
done
if [[ $string ]] ; then
echo Invalid
else
echo Valid
fi
我想你可以试试下面的代码:
String input = "()))((";
int count1=0;
int count2=0;
boolean temp = false;
char[] a = new char[input.length()];
for(int x=0;x<input.length();x++){
a[x] = input.charAt(x);
if(a[x]=='('){
count1++;
}
else if(a[x]==')'){
count2++;
}
}
if(a[0]==')'){
temp = true;
}
else if(a[0]=='(' && count1==count2){
int t1=1;
int t2=0;
for(int x=1;x < input.length();x++){
if(a[x]=='('){
t1++;
}
if(a[x]==')'){
t2++;
if(t2>t1){
temp = true;
break;
}
}
}
}
else{
temp = true;
}
if(!temp){
System.out.println("correct");
}
else{
System.out.println("incorrect");
}
发布您迄今为止尝试过的代码。这是一个非常常见的问题。做一些关于检查的研究。我还没有发现任何关于括号检查的东西,尽管我现在正在挖掘awk和grep命令。@Accalar-当你处理递归时,我不会在这个问题上使用任何正则表达式,最好编写一个简单的循环来检查剩余的括号,请参见Sayuris Answer,您还需要检查openBraces是否从不低于零,这表示右大括号前面没有匹配的左大括号。如果他正在寻找Java解决方案而不是bash解决方案,他可以这样做。不过,这一个非常好,如果字符串的括号中有任何类型的字符,那么这就不起作用:@Acallar:dosomethingString=$tr-cd