【问题标题】:Adding part of string as word next to it and converting the last word of the line to lower case将字符串的一部分添加为旁边的单词并将该行的最后一个单词转换为小写
【发布时间】:2014-07-19 13:46:20
【问题描述】:

我想将字符串的一部分作为单词(格式)添加到它旁边,然后将行的最后一个单词(格式)转换为小写

例如我有如下一行

<http://example.com/Bob> Alex  

我需要输出为

<http://example.com/Bob> <Bob> <alex>

我尝试了 sed 和 tr 命令,但没有成功。任何建议都会有所帮助

谢谢 帕拉维

【问题讨论】:

    标签: shell unix awk sed tr


    【解决方案1】:

    这样的?

    sed 's@\(http://.*/\)\(.*\) \(.*\)@\1\2 \2 \L\3@' <<< "http://example.com/Bob Alex"
    

    给予:

    http://example.com/Bob Bob alex
    

    【讨论】:

      【解决方案2】:

      使用 awk:

      awk '{s=gensub(/.*\//,"","g");
            s=gensub(/>.*/,"","g",s);
            printf "%s <%s>",$1,s;
            for(i=2; i < NF; i++)
            {
              printf " %s",$i;
            }
            printf " <%s>\n",tolower($NF);}' input.txt
      

      或者:

      awk '{s=gensub(/.*\//,"","g");
            s=gensub(/>.*/,"","g",s);
            $1=$1" <"s">";
            $NF="<"tolower($NF)">";
            print;}' input.txt
      

      输出:

      <http://example.com/Bob> <Bob> <alex>
      

      【讨论】:

        猜你喜欢
        • 2018-08-06
        • 1970-01-01
        • 1970-01-01
        • 2020-09-01
        • 2019-01-11
        • 2010-12-04
        • 2020-08-19
        • 1970-01-01
        • 2023-03-05
        相关资源
        最近更新 更多