2014-09-19 37 views
0

我有一个包含190个记录的文件,并且想将其拆分为190个单独的文件。 我面临的问题是,在将其分割为190个单独文件后,每个文件的末尾都会添加一个换行符。使用awk拆分文件时删除换行符

每行在其中都有“注”字。

我使用awk命令

awk '{if ($0 ~ /NOTE/) a++} {printf >> "file"a}' OrgFile.txt 

下面是我Orgfile.txt有190条记录的外观

2014-09-04-22.13.12.000000000000000912345678 NOTE 123456 123456 
    2014-08-04-23.22.12.000000000000000912345678 NOTE 123456 123456 
    2014-07-04-07.07.12.000000000000000912345678 NOTE 123456 123456 
    ..... 

样本如何仍​​然可以使用这个命令来创建这些新的个体来自Orgfile的文件,但没有换行符。

如果有人知道如何做到这一点更好,也将是巨大的

感谢

+0

该命令不会*添加换行符文件。在十六进制编辑器中打开它以查看。 – hek2mgl 2014-09-19 08:05:09

+0

确实如此,这就是为什么我问这个问题 – Chor419 2014-09-19 08:54:21

+0

你是用十六进制编辑器打开它的吗? – hek2mgl 2014-09-19 11:20:05

回答

0

我把它用print代替printf解决。我还做了在你的脚本的一些变化假设每一行去到一个新的文件:

awk '$0 ~ /NOTE/ {print $0 > "file"(++a);}' OrgFile.txt 

的变化:该模式是在身体外面(不使用if语句)。您的后增量可以使用预增量在相同的打印语句中完成。

让我知道如果我误解了,但在你的情况下,如果一行不包含单词“NOTE”,它被追加到你写的最后一个文件,因为你的打印代码是在另一个总是执行的块即使该行不包含“NOTE”一词)。在我的代码中,只有包含单词“NOTE”的行才写入文件,但如果我对您的语义错误,则可以更改代码;-)