Shell 在文件中写入从字符串的第一次出现到最后一次出现的数据

Shell 在文件中写入从字符串的第一次出现到最后一次出现的数据,shell,unix,sed,Shell,Unix,Sed,我希望使用shell脚本将字符串第一次出现和文件中最后一次出现之间的数据写入另一个文件 我尝试使用下面的sed命令来打印字符串匹配所在的行 sed -n '/Air/p' ashu.txt 示例:ashu.txt包含 I am a good student Air is polluted water is not free now Expensive Air will be 上面的sed命令给出如下输出 Air is polluted now Expensive Air will be

我希望使用shell脚本将字符串第一次出现和文件中最后一次出现之间的数据写入另一个文件

我尝试使用下面的sed命令来打印字符串匹配所在的行

sed -n '/Air/p' ashu.txt
示例:ashu.txt包含

I am a good student
Air is polluted 
water is not free 
now Expensive Air will be
上面的sed命令给出如下输出

Air is polluted 
now Expensive Air will be
但我想把结果如下所示

Air is polluted 
water is not free 
now Expensive Air

请注意我在帖子中的文本对齐。

当我听到文件中最后一个内容时,我通常会想“将文件反转,然后……文件中第一个内容”

因此:

即:

  • 从第一次打印到文件末尾
  • 倒流
  • 从第一个空气打印到流的末尾
  • 反转该流以恢复原始顺序
  • 更干燥:

    f() { sed -n '/Air/,$p' | tac; }
    f <file | f
    
    f(){sed-n'/Air/,$p'| tac;}
    
    如果只出现一次
    Air
    ,那么它应该打印包含单词“Air”的那一行。我没有勇气发布,但你是对的
    f() { sed -n '/Air/,$p' | tac; }
    f <file | f