【问题标题】:How to extract specific part of a file delimited by multiple lines of asterisks?如何提取由多行星号分隔的文件的特定部分?
【发布时间】:2020-05-03 14:54:32
【问题描述】:

我正在尝试从由多行 * 字符分隔的文件中提取文本的不同部分。文件内容如下所示:

**************************
**************************
abc123
abc1234
**************************
**************************
123abc
**************************
12ab34
**************************
**************************
12345
**************************
**************************
6789
abcd
1234
**************************
**************************

例如提取文件的第五部分的方法是什么?
第五部分包含以下行:

6789
abcd
1234

我尝试使用grep

grep -E -v '([^\*]*\*)' filename

命令的输出是:

abc123
abc1234
123abc
12ab34
12345
6789
abcd
1234

【问题讨论】:

    标签: linux bash shell awk grep


    【解决方案1】:

    编辑:在这里添加一个更通用的解决方案。

    awk '/^\*+/{if(prev!~/^\*/){count++}} count==5 && !/^\*/;{prev=$0}' Input_file
    


    您能否尝试使用 GNU awk 进行跟踪、编写和测试,并且仅显示示例。

    awk -v FS="*+" -v RS="^$" '{gsub(/^\n+|\n+$/,"",$10);print $10}' Input_file
    

    第二个解决方案:更通用的解决方案。

    awk '/^\*/{count++} count==9 && $0!~/^\*/' Input_file
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-29
      • 1970-01-01
      • 2016-11-27
      • 1970-01-01
      • 2015-07-29
      • 1970-01-01
      • 2022-06-10
      相关资源
      最近更新 更多