我有一个小 sed 脚本,它应该在第一个“黄色狮子”出现之前打印“动物王 1:”,在第二个“黄色狮子”之前打印“动物王 2:”,在前面打印“动物王 3:”第三次“黄狮”事件。是否有可能在 sed 中实现这一点?
sed 和输出的输入文件的内容可以在这里看到:
[user@T60 ~]$ cat animals.txt
red cat
blue dog
yellow lion
brown tiger
black hippo
yellow lion
white zebra
yellow lion
[martint@martint ~]$ cat sed-test.sh
#!/usr/bin/env bash
sed 's/\(.*lion\)/\
\
animal king 1:\
\
\1 /' < "animals.txt"
[user@T60 ~]$ ./sed-test.sh
red cat
blue dog
animal king 1:
yellow lion
brown tiger
black hippo
animal king 1:
yellow lion
white zebra
animal king 1:
yellow lion
[user@T60 ~]$
如您所见,“动物之王”的数字在所有三个出现中都是“1”。有没有办法在 sed 中的每个“.*lion”匹配之后将其增加一?