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

Shell 将字符串的一部分作为单词添加到其旁边,并将行的最后一个单词转换为小写,shell,unix,awk,sed,tr,Shell,Unix,Awk,Sed,Tr,我想在字符串旁边添加一部分作为单词(格式),然后将该行的最后一个单词(格式)转换为小写 例如,我有一行如下 <http://example.com/Bob> Alex 亚历克斯 我需要输出为 <http://example.com/Bob> <Bob> <alex> <http://example.com/Bob> <Bob> <alex> 我尝试了sed和tr命令,但没有成功。任何建议都会有帮助

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

例如,我有一行如下

<http://example.com/Bob> Alex  
亚历克斯 我需要输出为

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

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

谢谢 帕拉维是这样的吗

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

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

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

sed 's@\(http://.*/\)\(.*\) \(.*\)@\1\2 \2 \L\3@' <<< "http://example.com/Bob Alex"
使用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);
printf“%s”,$1,s;
对于(i=2;i
或:

awk'{s=gensub(/.\/,“”,“,”g”);
s=gensub(/>.*/,“”,“g”,s);
$1=$1" ";
$NF=“”;
print;}'input.txt
输出:


带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);
printf“%s”,$1,s;
对于(i=2;i
或:

awk'{s=gensub(/.\/,“”,“,”g”);
s=gensub(/>.*/,“”,“g”,s);
$1=$1" ";
$NF=“”;
print;}'input.txt
输出:


带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);
printf“%s”,$1,s;
对于(i=2;i
或:

awk'{s=gensub(/.\/,“”,“,”g”);
s=gensub(/>.*/,“”,“g”,s);
$1=$1" ";
$NF=“”;
print;}'input.txt
输出:


带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);
printf“%s”,$1,s;
对于(i=2;i
或:

awk'{s=gensub(/.\/,“”,“,”g”);
s=gensub(/>.*/,“”,“g”,s);
$1=$1" ";
$NF=“”;
print;}'input.txt
输出: