Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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
使用sed/awk删除分隔文本列的最后一部分_Awk_Sed - Fatal编程技术网

使用sed/awk删除分隔文本列的最后一部分

使用sed/awk删除分隔文本列的最后一部分,awk,sed,Awk,Sed,我有一个包含多行值的文件。第一列是PacBio读取ID,是一个正斜杠分隔的值。我想通过删除最后的斜杠和超出它的值来修改该列。理想情况下,结果将是流式的(sed/awk等),并且不依赖于正斜杠的数量(即,无论是单斜杠还是三斜杠,解决方案都应该有效,如下所示。) 如果您不介意稍微修改空白: awk '{sub("/[^/]*$","",$1)}1' input 如果空格很重要: sed 's@^\([^ ]*\)/[^ /]* @\1 @' input 如果您不介意稍微修改空白: awk '{s

我有一个包含多行值的文件。第一列是PacBio读取ID,是一个正斜杠分隔的值。我想通过删除最后的斜杠和超出它的值来修改该列。理想情况下,结果将是流式的(sed/awk等),并且不依赖于正斜杠的数量(即,无论是单斜杠还是三斜杠,解决方案都应该有效,如下所示。)


如果您不介意稍微修改空白:

awk '{sub("/[^/]*$","",$1)}1' input
如果空格很重要:

sed 's@^\([^ ]*\)/[^ /]* @\1 @' input

如果您不介意稍微修改空白:

awk '{sub("/[^/]*$","",$1)}1' input
如果空格很重要:

sed 's@^\([^ ]*\)/[^ /]* @\1 @' input
Shortsed解决方案:

sed 's~/[^/[:space:]]* ~ ~' file
示例性输出:

m54151_170617_100137/4194626/10117_11723 1257    1606

  • ~
    -被视为sed子命令分隔符
    • Shortsed解决方案:

      sed 's~/[^/[:space:]]* ~ ~' file
      
      示例性输出:

      m54151_170617_100137/4194626/10117_11723 1257    1606
      

      • ~
        -被视为sed子命令分隔符

      如果字段中可能有空格,请使用
      /
      进行拆分

      使用awk,您可以在
      /
      上拆分,用
      /
      重新连接字段,然后打印最后一个字段:

      $ awk -F'/' '{s=""
                   for (i=1;i<NF;i++)
                      s=s ? s FS $i : $i
                    print s $NF}' file
      
      $awk-F'/'{s=“”
      
      对于(i=1;i如果字段中可能有空格,请使用
      /
      进行拆分

      使用awk,您可以在
      /
      上拆分,用
      /
      重新连接字段,然后打印最后一个字段:

      $ awk -F'/' '{s=""
                   for (i=1;i<NF;i++)
                      s=s ? s FS $i : $i
                    print s $NF}' file
      
      $awk-F'/'{s=“”
      
      对于(i=1;i是你的价值观之间的标签还是其他什么?@EdMorton是这些标签是你的价值观之间的标签还是其他什么?@EdMorton是这些标签回答得很好。我给了Roman一个检查,因为我觉得它更容易理解。回答得很好。我给了Roman一个检查,因为我觉得它更容易理解。谢谢,但是此解决方案要求您知道子字符串长度,因此它不是通用的。谢谢,但此解决方案要求您知道子字符串长度,因此它不是通用的。