Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除string-awk中的空格和特定字符_Awk - Fatal编程技术网

如何删除string-awk中的空格和特定字符

如何删除string-awk中的空格和特定字符,awk,Awk,下面是一个输入 !{ID=34, ID2=35} > !{ID=99, ID2=23} > !{ID=18, ID2=87} < 因此,使用“sub”函数,我认为可以将空格替换为空白,但结果显示: 1#是#否 你能告诉我怎么了吗? 如果可能的话,教我如何删除“{”和“}”。 如果你能给我看awk文件版本而不是一行,我将不胜感激 BEGIN { VALUES = "" L_EXIST = "NO" R_EXIST = "NO"

下面是一个输入

!{ID=34, ID2=35}
> 
!{ID=99, ID2=23}
> 
!{ID=18, ID2=87}
< 
因此,使用“sub”函数,我认为可以将空格替换为空白,但结果显示:

1#是#否

你能告诉我怎么了吗? 如果可能的话,教我如何删除“{”和“}”。 如果你能给我看awk文件版本而不是一行,我将不胜感激

BEGIN {
VALUES       = ""    
L_EXIST = "NO"           
R_EXIST = "NO"           

}

/!/       { VALUES = gsub(" ", "", $0);
            getline;

            if ($1 == ">") L_EXIST = "YES";
            else if ($1 == "<") R_EXIST = "YES";

            print VALUES"#"L_EXIST"#"R_EXIST

           }

END {

}
开始{
VALUES=“”
L_EXIST=“否”
R_EXIST=“否”
}
/!/       {VALUES=gsub(“,”,$0);
getline;
如果($1==“>”)L_EXIST=“YES”;

否则,如果($1==”假设您有以下输入:

input.txt

!{ID=34,ID2=35}
!{ID=36,ID2=37}
>
您可以使用以下awk命令

awk -F'[!{}, ]' 'NR>1{yn="NO";if($1==">")yn="YES";print l"#"yn}{l=$3","$5}' input.txt
要生成此输出,请执行以下操作:

ID=34,ID2=35#否
ID=36,ID2=37#是

假设您有以下输入:

input.txt

!{ID=34,ID2=35}
!{ID=36,ID2=37}
>
您可以使用以下awk命令

awk -F'[!{}, ]' 'NR>1{yn="NO";if($1==">")yn="YES";print l"#"yn}{l=$3","$5}' input.txt
要生成此输出,请执行以下操作:

ID=34,ID2=35#否
ID=36,ID2=37#是

给定您的示例输入:

$ cat file
!{ID=34, ID2=35}
>
!{ID=99, ID2=23}
>
!{ID=18, ID2=87}
<
字段分隔符设置为使用您感兴趣的行部分之间的空格和其他字符。记录分隔符设置为
,以便将每对行视为单个记录


第一条记录是空的(从第一行开始,一直到第一条
),因此我们只处理之后的记录。输出是使用
printf
,用三元数来确定最后一部分(我假设只有两个选项,
,给定您的示例输入:

$ cat file
!{ID=34, ID2=35}
>
!{ID=99, ID2=23}
>
!{ID=18, ID2=87}
<
字段分隔符设置为使用您感兴趣的行部分之间的空格和其他字符。记录分隔符设置为
,以便将每对行视为单个记录



第一条记录是空的(从第一行开始,一直到第一个
),因此我们只处理之后的记录。输出是使用
printf
构造的,用三元组确定最后一部分(我假设只有两个选项,
您需要更清楚地解释输入如何映射到输出。更多的示例可能会有所帮助。
echo'!{ID=34,ID2=35}';tr-d'[!{}]
返回
ID=34,ID2=35
-d
删除,然后返回一组字符)。不确定额外的
#YES#NO
是什么意思。谢谢。不过我只需要使用awk。围绕
'>'
的那些单引号是新的-它们应该存在吗?这些输入行的相应输出是什么?您需要更清楚地解释输入如何映射到输出。更多的示例可能会有所帮助l、
echo'!{ID=34,ID2=35}'|tr-d'[!{}]
返回
ID=34,ID2=35
-d
删除,然后返回一组字符)。不确定额外的
#YES#NO
是什么意思。谢谢。不过我只需要使用awk。
周围的单引号是新的-它们应该在那里吗?这些输入行的相应输出是什么?谢谢。输入总是像!{ID=34,ID2=35}和“>”,然后!{ID=36,ID2=37}和“>”。你能告诉我如何将你的解决方案转换成awk文件吗?
是#否
的意思是什么?所以有时是
,有时是
@Sigularity如果你有更多的细节要添加,请编辑你的问题使其更清楚。@Sigularity???你能给出一个你的输入和经验的独立示例吗ected输出?(请编辑问题,不要在评论中发布!)谢谢。输入总是像!{ID=34,ID2=35}和'>'然后!{ID=36,ID2=37}和“>”。你能告诉我如何将你的解决方案转换成awk文件吗?
是#否
的意思是什么?所以有时是
,有时是
@Sigularity如果你有更多的细节要添加,请编辑你的问题使其更清楚。@Sigularity???你能给出一个你的输入和经验的独立示例吗ected输出?(请编辑问题,不要在评论中发布!)如果我还有一个问题与这个问题非常相似,那么什么是好的方法?新问题还是更新问题?对不起,我在这个网站上没有太多。接受答案并向上投票。发布新问题。祝你好运。@Sigularity我刚刚更新了一点以简化它。我建议你尝试理解这里的代码,并希望你能理解它你可以根据你的情况进行调整。如果没有,那么最好问一个新问题。如果你决定问一个新问题,请不要忘记我们给你的关于如何提问的建议。当然。我会保留它。非常感谢。如果我还有一个与此非常相似的问题,那会是什么问题d方法?新问题还是更新问题?对不起,我在这个网站上没有太多。接受答案并投票表决。发布新问题。祝你好运。@Sigularity我刚刚更新了一点,以简化它。我建议你尝试理解这里的代码,希望你能够将其调整到稍微不同的场景。如果没有,那么perhaps最好问一个新问题。如果你决定问一个新问题,别忘了我们给你的关于如何提问的建议。当然。我不会问。非常感谢。