次のような大きなファイルがあります。
Header1
Subheader1
l1
l1'
l1''
Header2
Subheader2
l2
l2'
l2''
Headern
Subheader n
ln
ln'
ln''
(ここでnは約25K)
l1-l1'', l2-l2'' ... ln-ln''
たとえば、file1, file2, ... file n
ファイルの特定の行番号に貼り付ける必要があります。
ベストアンサー1
ヘッダーと行の関係を指定していません。ただし、関係が一定の行数の場合は、grepを使用して行番号を取得し、sedを使用して行を抽出できます。
たとえば、Subheaderの後ろのすべての行を取得するには、次の手順を実行します。
#!/bin/bash
file_in=/tmp/test.txt
file_out=/tmp/file1.txt
LINES=`grep -n Subheader $file_in | cut -f1 -d:`
for line in $LINES; do
echo $line
line1=$(($line+1))
sed -n ${line1}p $file_in >> $file_out
done
編集:上記のスクリプトをループで実行できます。
#!/bin/bash
n_max=100
file_in=/tmp/test.txt
file_out=/tmp/file
LINES=`grep -n Subheader $file_in | cut -f1 -d:`
for n in `seq 1 $n_max`; do
echo "line $n"
for line in $LINES; do
line_n=$(($line+$n))
sed -n ${line_n}p $file_in >> $file_out$n.txt
done
done
exit 0