cURL을 사용하여 다른 파일에서 가져온 일부 콘텐츠가 포함된 양식을 제출하겠습니다.sed
param1
다른 파일의 줄 일치 패턴을 사용 하면 sed
다음이 제대로 작동합니다.
curl -d param1="$(sed -n '/matchpattern/p' file.txt)" -d param2=value2 http://example.com/submit
이제 문제 해결을 시작해 보겠습니다. 일치하는 패턴 자체가 아닌 두 개의 일치하는 패턴 사이에만 텍스트를 표시하고 싶습니다.
file.txt
다음이 포함된다고 할 수 있습니다 .
Bla bla bla
firstmatch
It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.
secondmatch
The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English.
현재 많은 "beetween 2 일치 패턴" 명령은 및 를 sed
제거하지 않습니다 .firstmatch
secondmatch
나는 결과가 다음과 같기를 원합니다.
It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.
답변1
이를 수행할 수 있는 한 가지 방법은 다음과 같습니다.
sed '1,/firstmatch/d;/secondmatch/,$d'
설명: 첫 번째 줄부터 일치하는 줄까지첫 번째 게임, 삭제. 라인 매칭의 관점에서두 번째 게임마지막 줄로 가서 삭제하세요.
답변2
첫 번째 줄에 1이 나타나면 다른 sed
해결 방법은 실패합니다 .firstmatch
간단하게 유지하고 단일 범위와 빈 2 정규식을 사용하십시오.
범위의 끝을 제외하고 범위의 모든 것을 인쇄하십시오(자동 인쇄는 비활성화됩니다) 3 :
sed -n '/firstmatch/,/secondmatch/{//!p;}' infile
또는 더 짧게는 범위에 없는 모든 항목을 제거하고 범위 끝을 제거합니다.
sed '/firstmatch/,/secondmatch/!d;//d' infile
1: 이유는 두 번째 주소가 정규식인 경우 검사 종료 일치는 첫 번째 주소와 일치하는 줄 다음 줄에서 시작됩니다..
따라서 /firstmatch/
입력의 첫 번째 줄은 평가되지 않고 sed
줄 번호와 일치하기 때문에 제거되고 1,/RE/
두 번째 줄로 이동하여 일치하는지 확인합니다./firstpattern/
2:언제정규식비어 있음(예: //
)은 sed
마지막과 같이 동작합니다.정규식마지막으로 적용된 명령에 사용된 내용을 지정합니다(주소 또는 대체 명령의 일부로).
3: ;}
구문은 최신 sed
구현에 적합합니다. 오래된 구현의 경우 세미콜론이나 별도의 표현식 대신 개행 문자를 사용하세요.sed -n -e '/firstmatch/,/secondmatch/{//!p' -e '}' infile
답변3
전혀:
awk '
$1 == "secondmatch" {print_me = 0}
print_me {print}
$1 == "firstmatch {print_me = 1}
'