하나의 입력에서 여러 줄을 선택하고 한 번에 다른 파일에 저장하는 방법은 무엇입니까?

하나의 입력에서 여러 줄을 선택하고 한 번에 다른 파일에 저장하는 방법은 무엇입니까?

stdout에서 많은 양의 데이터를 처리해야 하는데 몇 줄만 필요합니다.

로 시작하는 줄의 일부 데이터 와 로 시작하는 줄의 일부 데이터를 Label 3파일에 추가하고 싶다고 가정해 보겠습니다 .F3.csvLabel 5F5.csv

입력 예 - STDOUT에서

Label 1 25
Label 2 60
Label 3 70
Label 4 95
Label 5 100

산출

70에 추가 합니다 .F3.csv100F5.csv

이것이 가능한지, 가능하다면 어떻게 하는지 알고 싶습니다.

혹시 해결책을 알고 계시나요?

답변1

Awk를 사용하면 이 작업을 쉽게 수행할 수 있습니다.

awk '/Label 3/ { print $3 >>"F3.csv" } /Label 5/ { print $3>>"F5.csv" }'

이것은 것이다추가의다음으로 시작하는 행의 값태그 3그리고태그 5파일로F3.csv그리고F5.csv이에 따라.

이는 더 간결하게 작성할 수도 있습니다.

awk '/Label 3|Label 5/ { print $3 >> "F"$2".csv"}'

태그 접미사에서 대상 파일 이름을 유추할 수 있다는 점을 이용하세요.

(@don_crissti에게 감사드립니다!)

답변2

이 시도 -

#sed -e '/Label\ 3/w F3.csv' -e '/Label\ 5/w F5.csv' sed.txt
Label 1 25
Label 2 60
Label 3 70
Label 4 95
Label 5 100
#head F?.csv
==> F3.csv <==
Label 3 70

==> F5.csv <==
Label 5 100

관련 정보