플랫 파일 데이터베이스에서 특정 개체 제거

플랫 파일 데이터베이스에서 특정 개체 제거

플랫 파일 데이터베이스가 있는데 여기에서 특정 개체를 제거해야 합니다.

파일에는 수많은 블록이 있지만 블록의 개체 2개에 관심이 있습니다 OBJECT NickCore.

아래 예:

OBJECT NickCore
DATA display SomeUser
DATA pass sha256:2b35341220119fad48762e4f843d1544354f8b196cf09bf1b4ea39f9a31be063:5ff60fae76026907102419460aae83aa74daf374048940b612ef83460043b565
DATA email [email protected]
DATA language
DATA access SomeUsero@*.5A5E5CBA.81D21A52.IP
DATA memomax 20
DATA MEMO_SIGNON 1
DATA MEMO_RECEIVE 1
DATA HIDE_EMAIL 1
DATA HIDE_MASK 1
DATA NS_PRIVATE 1
DATA AUTOOP 1
DATA KILLPROTECT 1
DATA NS_SECURE 1
END

파일의 모든 블록에서 DATA display및 를 제거하고 싶습니다 .DATA passOBJECT NickCore

원하는 출력은 쉼표로 구분됩니다.

SomeUser,sha256:2b35341220119fad48762e4f843d1544354f8b196cf09bf1b4ea39f9a31be063:5ff60fae76026907102419460aae83aa74daf374048940b612ef83460043b565

이 작업을 수행하려면 무엇을 사용해야 합니까?

답변1

GNU sed를 사용하면:

sed -n '/^OBJECT NickCore/,/^END/{s/^DATA display //;Ta;h;:a;s/DATA pass //;Tb;H;g;s/\n/,/p;:b}' file

보다:man sed

답변2

펄 1-라이너:

perl -lne '$u=$1 if(/^DATA display (\S+)/);print "$u,$1" if(/^DATA pass (\S+)/)' filename

관련 정보