
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]
[Space]はT(Enterキー)の後に生成された新しい行です。
ファイル(存在する場合)からスペースを削除し、H:とT:の間にあるデータで新しいファイルを作成するにはどうすればよいですか?
答え1
ただ削除したい場合みんな [blank space]
(通常はスペースを含めることができます)行:
sed '/^[[:space:]]*$/ d' filename > newfile
または単に(なぜ気にするawk
かsed
):
grep . filename > newfile
または、H:とT:行の間に印刷してください。
sed -n '/^H:.*/, /^T:.*/ p' filename > newfile
答え2
あなたは2つの異なる質問をしています。正確に何をしたいのか分かりません。
空行を削除
awk
すべての行を文字と一致させ、次の文字のみを出力するために使用されます。
$ awk '/./ {print}' /path/to/your/file
H:とT:の間の出力ラインのみ
awk
で始まる行を一致させ、H:
それらのT:
間の行のみを出力するために使用されます(他の行にこれらの接頭辞がないと仮定)。
$ awk '/^H:/,/^T:/ {print}' /path/to/your/file