必要以上のデータを含むテキストファイルのコレクションがあります。各ファイルの最初の行にカンマ区切り文字列は次のとおりです。
stop_id,stop_code,stop_name,stop_desc,stop_lat,stop_lon,location_type,parent_station,zone_id
その後、そのキーの下にすべてのデータがあります。このデータのサブセットを新しいテキストファイルに抽出する必要がある場合は、そのサブセットを使用できます(すべてのデータは必要なく、多すぎます)。
このコマンドを使用して最初の行を抽出します。
sed -n '1p' source.txt > destination.txt
また、このコマンドを使用して必要な特定の行を抽出します。
grep "string" source.txt > destination.txt
問題は、同じスクリプトで両方のコマンドを実行すると(ほぼそのまま、行または区切り&&
)grep
、出力がsed
出力を上書きすることです。 2つを順番に実行し、2つの組み合わせ出力を取得するにはどうすればよいですか?
grep
私はより複雑なコマンドを使用して1行を検索し、次に一連の行を見つけることに関して同様の問題を見つけました。データを抽出する必要がある各ファイルの最初の行が異なるため、ここでは機能しません。
理想的には、作業する必要がある各ファイルに対して実行できる関数を作成したいのですが、まずコマンドをリンクして出力を結合する必要があります。
ベストアンサー1
sed
これにより、両方の操作が実行されます(最初の行と含まれているすべての行を印刷string
)。
sed -n '1p; /string/p' source.txt > destination.txt
またはより長いバージョン:
sed -n -e '1p' -e '/string/p' source.txt > destination.txt