Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/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 Bash中的部分字符串拆分 让我们考虑这个字符串:_String_Bash_Split_Partial - Fatal编程技术网

String Bash中的部分字符串拆分 让我们考虑这个字符串:

String Bash中的部分字符串拆分 让我们考虑这个字符串:,string,bash,split,partial,String,Bash,Split,Partial,00x\00x\00x\00x\00x\00x\00x\00x\00x\g09x\t20x\00x\00x\00x\00x\00x\ 我要检索的是: 00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\g09x\t20x\ 基本上,逻辑是: 只要是00x\就继续读取字符串的剩余部分 只要不是00x\就继续读取字符串的剩余部分。 分开 如何在bash中实现这一点?注意中间有一个“9”和一个“T”。因此,在200x\token之间可能存在“垃圾”。因此,我不能将字符串拆分

00x\00x\00x\00x\00x\00x\00x\00x\00x\g09x\t20x\00x\00x\00x\00x\00x\

我要检索的是:

00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\g09x\t20x\

基本上,逻辑是:

  • 只要是00x\就继续读取字符串的剩余部分

  • 只要不是00x\就继续读取字符串的剩余部分。 分开

  • 如何在bash中实现这一点?注意中间有一个“9”和一个“T”。因此,在200x\token之间可能存在“垃圾”。因此,我不能将字符串拆分为令牌,也不能使用cut(不是固定长度)。我能用awk或sed做什么魔术

    谢谢

    编辑:输入字符串可以在00x\之后的其他歌唱之后。该公司像这样这样的:00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\00x\(二)

    $ awk '
    BEGIN {
        FS=ORS="\\"
    }
    {
        for(i=1;i<=NF;i++)
            if(($i=="00x")&&p!="00x"&&p!="") {
                printf "\n"
                exit
            } else {
                p=$i
                print $i
            }
    }' file
    
    在使用负查找的perl中:

    $ perl -ne 's/(?<!00x)\\00x.*/\\/g;print' file
    00x\00x\00x\00x\00x\00x\00x\00x\00x\g09x\t20x\
    

    $perl-ne的/(?谢谢。这正是我想要的!
    
    $ perl -ne 's/(?<!00x)\\00x.*/\\/g;print' file
    00x\00x\00x\00x\00x\00x\00x\00x\00x\g09x\t20x\