通过删除文件末尾的换行符来创建新文件

通过删除文件末尾的换行符来创建新文件

我有一个平面文件,其中包含 H: 和 T: 之间的以下数据记录。

H:20050427 HEADER RECORD
0000000 00000 000000000 123456 00 654321 DATARECORD
0000000 00000 000000000 123456 00 654321 DATARECORD
0000000 00000 000000000 123456 00 654321 DATARECORD
0000000 00000 000000000 123456 00 654321 DATARECORD
T:20050427 TRAILER RECORD
[blank space]

[空格] 是在 T 之后创建的新行(回车键):

如何从文件中删除空格(如果存在)并使用 H: 和 T: 之间存在的数据创建新文件?

答案1

如果您只想删除全部 [blank space](通常可能包含任何空格)行:

sed '/^[[:space:]]*$/ d' filename > newfile

或者简单地(为什么要费心awksed):

grep . filename > newfile

或仅在 H: 和 T: 行之间打印:

sed -n '/^H:.*/, /^T:.*/ p' filename > newfile

答案2

你有点问两个不同的问题;我不确定你到底想做什么

删除空行

用于awk匹配任何带有字符的行并仅输出以下字符:

$ awk '/./ {print}' /path/to/your/file

仅输出 H: 和 T: 之间的行

用于awk匹配以 and 开头的行H:T:并且仅输出它们之间的行(假设其他行都不具有这些前缀):

$ awk '/^H:/,/^T:/ {print}' /path/to/your/file

相关内容