这是我的文件:
myfile.txt:

John Jony                                                   Old Boy
Maria                                                       Beautiful Girl
Dede YoYo                                                   Animal

与:sed 's/ \+ /\ - /g' myfile.txt > ttt.txt我有这个输出:
John Jony - Old Boy -
Maria - Beautiful Girl -
Dede YoYo - Animal -

但我不想替换第二个“选项卡”空间。
我只是把第一组和第二组之间用“空格减空格(“-”)隔开。
谢谢!

最佳答案

如果您还有更多的艺术家喜欢

John Jony    Another Name    Old Boy

并希望此输出:

John Jony & Another Name - Old Boy

则稍微复杂一点,但对于awk来说并非没有可能:

输入文件:

John Jony    Another Name     Old Boy
First artist    Second artist    Third artist    Song
Maria             Beautiful Girl
Dede YoYo         Animal

命令:
awk -F '  +' '
NF==3 {
sub("  +"," - ");
print
}

NF>3 {
  for (i=1;i<=NF-3;i++) {
    printf("%s",$i);
    printf(" & ");
  }
  printf("%s - %s\n",$(i++),$i);
}' myfile.txt > ttt.txt

输出:

John Jony & Another Name - Old Boy
First artist & Second artist & Third artist - Song
Maria - Beautiful Girl
Dede YoYo - Animal

关于linux - 制表符空间用sed或tr替换为 “-”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32250591/

10-12 13:04