根据模式分割文件

根据模式分割文件

我有一个如下文件。

***ABC***
Line1*
L*ine2*
***DEF***
Line3*
Lin*e4*

我需要创建两个文件ABCDEF包含以下数据:

ABC.dat:

Line1*
L*ine2*

DEF.dat:

Line3*
Lin*e4*

我也可以使用小型 shell 脚本生成文件。

答案1

$ awk '/^\*\*\*/{gsub(/\*/,""); fname=$0".dat"; next} {print > fname}' ip.txt 
$ cat ABC.dat 
Line1*
L*ine2*
$ cat DEF.dat 
Line3*
Lin*e4*
  • /^\*\*\*/匹配以以下开头的行***
    • gsub(/\*/,"")删除所有*此类行
    • fname=$0".dat"将附加的剩余字符分配.datfname变量
    • next移至下一行
  • print > fname将当前行内容打印到保存在的文件名中fname

相关内容