【问题标题】:To get first and last occurrence when cut using a delimiter使用分隔符进行剪切时获取第一次和最后一次出现
【发布时间】:2014-09-05 06:57:41
【问题描述】:

我有一个包含以下数据的文本文件 a.txt

 abc/def/ghi  
 jkl/mno/pqr/stu

我需要剪切它们,以便我得到第一个和最后一个以“/”作为分隔符的字符串

预期的输出是

abc ghi
jkl stu


cat a.txt |cut -d "/" -f1               #gives me first cell
cat a.txt |rev |cut -d "/" -f1 |rev     #gives me last cell

我希望两个单元格都可以在单个命令中使用。请帮忙。

【问题讨论】:

    标签: shell awk sed sh cut


    【解决方案1】:

    您可以为此使用 awk,

    $ awk -F/ '{print $1,$NF}' file
    abc ghi  
    jkl stu
    

    通过sed

    $ sed 's~^\([^/]*\).*\/\(.*\)$~\1 \2~g' file
    abc ghi  
    jkl stu
    

    通过perl

    $ perl -pe 's;^([^/]*).*\/(.*)$;\1 \2;g' file
    abc ghi  
    jkl stu
    

    丑陋地破解greppaste

    $ grep -oP '^[^/]*|\w+(?=$)' file | paste -d' ' - -
    abc ghi
    jkl stu
    

    【讨论】:

      【解决方案2】:

      另一个sed(没有捕获),

      sed 's@/.*/@ @g' yourfile
      

      测试:

      $ sed 's@/.*/@ @g' yourfile
      abc ghi  
      jkl stu
      

      【讨论】:

        猜你喜欢
        • 2013-12-28
        • 1970-01-01
        • 2015-06-13
        • 2011-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-17
        • 2014-10-08
        相关资源
        最近更新 更多