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

时间:2016-08-25 15:36:37

标签: 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

但我想要如下所示。

Air is polluted 
water is not free 
now Expensive Air

请在帖子中加上我的文字对齐。

1 个答案:

答案 0 :(得分:1)

当我在文件中听到最后 某些内容时,我通常认为"反转文件并且...... 第一个 文件"

所以:

sed -n '/Air/,$p' file | tac | sed -n '/Air/,$p' | tac

是:

  1. 从第一个Air打印到文件末尾
  2. 反转该流
  3. 从第一个Air打印到流的末尾
  4. 撤消该流以恢复原始订单。
  5. 更多干:

    f() { sed -n '/Air/,$p' | tac; }
    f <file | f