根据模式

时间:2015-12-17 12:57:37

标签: unix awk

我在文件中有以下内容

 0010CTCTLEDPPOO   STAND  201002971
 0010CTCTLEDPPOO   STAND  201002971
 0010CTCTLEDPPOO   STAND  201002971
 0010CTCTLEDPPOO   STAND  201002971

对于0010CTCTL的每次出现,WNCRX都应添加到

之前的行
WNCRX

0010CTCTLEDPPOO   STAND  201002971


WNCRX

0010CTCTLEDPPOO   STAND  201002971


WNCRX

0010CTCTLEDPPOO   STAND  201002971


WNCRX

0010CTCTLEDPPOO   STAND  201002971

我正在使用以下

awk '/0010CTCTL/{print "WNCRX"}1' file

我能够实现所需要的,但我希望每个实例都在一个新文件中

所以应该有四个文件,每个文件包含

WNCRX

0010CTCTLEDPPOO   STAND  201002971

您能否建议如何生成单个文件

3 个答案:

答案 0 :(得分:1)

使用你的基地:

  • 使用重定向>打印到文件
  • 使用计数器++c增加每行的文件名

CMD:

awk '/0010CTCTL/{file="file" ++c ".out";print "WNCRX" > file}{print > file}' file

答案 1 :(得分:0)

你好也可以这样尝试

while read line
do  
        File_Name=`date +%N`
        echo "WNCRX" >> ${File_Name}
        echo $line  >> ${File_Name}
    done < Src_FileName

这样您就可以根据需要将文件名设置为动态值。

答案 2 :(得分:0)

您可以使用csplit对来自Awk的输出进行后期处理。

awk '/0010CTCTL/{print "WNCRX"}1' file |
csplit - '/^WNCRX$/'
相关问题