awk에 파이핑 중이며 일부 줄의 끝에 좋은 RS 문자열을 찾았습니다. 그러나 RS로 후행 문자열을 정의하면 awk가 전체 줄 내용을 제거합니다. 나는 RS 문자열까지 데이터를 보존하고 RS는 라인에서 제거하기를 원합니다. AWK위한awk - RS, 같은 줄 앞에 데이터를 인쇄하십시오.
예 입력 : AWK에서
data data data RS_STRING
data SEARCHED_STRING data data
data data
data data data RS_STRING
data data data
data data
data data data RS_STRING
data SEARCHED_STRING data data
data data
원하는 출력은 :
awk '/SEARCHED_STRING/' RS = "RS_STRING"
... 및 I 얻을 :
data data data
data SEARCHED_STRING data data
data data
data data data
data SEARCHED_STRING data data
data data
나의 현재 AWK 구문은
data SEARCHED_STRING data data
data data
data SEARCHED_STRING data data
data data
RS_STRING을 RS로 정의하면 알 수 있듯이 awk는 해당 행에 포함 된 RS 이전의 모든 데이터를 제거합니다.
나는 지난 3 일 동안 해결책을 찾고 있었지만 아직 찾지 못했습니다.
미리 감사드립니다. 이 기록 사이에 빈 줄이없고, RS_STRING 레코드의 첫 번째 줄에 항상 경우 레코드 분리 등의 빈 줄과 AWK를 사용
에 오신 것을 환영을 제공합니다. 곧 [About] 페이지를 읽으십시오. RS는 레코드 (라인) 분리 기호입니다. 아마 당신이 좋은 필드 구분자를 찾았다 고 생각 했나요? 레코드 구분 기호를 의미하는 경우 샘플 데이터에는 단 3 개의 레코드가 있고 세 번째 레코드는 종료되지 않습니다 (첫 번째 RS STRING 앞에있는 자료, 두 개의 마커 사이의 자료 및 두 번째 마커 뒤의 자료). 사용중인 RS 문자열은 정확히 무엇입니까? 정확히 RS를 어떻게 세우고 있니? –
내가 말한 문제는, 라인의 시작 부분에 있지 않은 RS를 설정하는 것입니다. 라인의 시작 부분에 RS를 설정하면 해당 라인에서 RS가 제거되고 해당 라인의 RS 이후의 데이터는 그대로 유지됩니다. 그러나 RS가 회선 내의 다른 위치에 있으면 정의 된 RS까지의 모든 것이 삭제됩니다. 그 데이터를 보존하고 싶습니다. 이 예는 내가 성취하고자하는 것을 설명하기위한 것입니다. –
sed를 시도하고 RS STRING을 null로 바꿉니다. 샘플 : sed 's/RS STRING // ' – alvits