将字符串的一部分添加为旁边的单词,并将该行的最后一个单词转换为小写

时间:2014-07-19 13:46:21

标签: shell unix awk sed tr

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

例如我有一行如下

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

我需要输出

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

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

由于 Pallavi

2 个答案:

答案 0 :(得分:2)

这样的东西?

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

,并提供:

http://example.com/Bob Bob alex

答案 1 :(得分:1)

用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>