다음 줄이 포함된 텍스트 파일이 있습니다.
From: arkit Corp. <[email protected]>
Sent: Friday, June 16, 2017 6:35 PM
To: User Name
Subject: arkit Corp.: activity alert.
<http:// arkit.co.in/>
ACTIVITY ALERT FOR:
Ravi
https:// arkit.co.in/ Path Read (03/07/2017)
Path: /website/upload/file.txt
https:// arkit.co.in/ Path Read (04/07/2017)
Path: /website/upload/file1.txt
Copyright ▒ 2017 arkit Corp.. All Rights Reserved.
다음과 같이 인쇄하고 싶습니다.
https:// arkit.co.in/ Path Read (03/07/2017) Path: /website/upload/file.txt
https:// arkit.co.in/ Path Read (04/07/2017) Path: /website/upload/file1.txt
나란히 인쇄하는 방법을 제안해 줄 수 있는 사람이 있나요?
답변1
전체 메시지를 구문 분석하려면 다음과 같이 "주소"를 사용하십시오.
sed -n '/https:/h;/Path:/{H;g;s/\n/ /p;}' yourfile
기본적으로 출력되지 않습니다( -n
). 그것으로 시작하는 줄을 https:
유지 버퍼에 넣은 다음, Path:
그 줄을 유지 버퍼에 추가하고, 패턴 공간으로 이동하고 개행을 공백으로 바꿉니다.
또는 다른 방법:
sed -e '/^https:/!d;:a' -e '$!N;/Path:/!ba' -e 's/\n\n*/ /' yourfile
즉, 행이 https:
( )로 시작하지 않으면 삭제하십시오 /^https:/!d
. 그렇지 않으면 행 을 추가할 때까지 루프( :a
)를 시작하여 새 행(있는 경우)을 추가합니다( ) . . 마지막으로 모든 것을 한 줄에 넣기 위해 줄 바꿈을 공백으로 바꿉니다( ).$!N
Path:
/Path:/!ba
s/\n\n*/ /
답변2
옵션 1
빈 줄을 끊고 싶다면,
awk '{printf $0; printf ($0=="")? "\n" : " "}' /path/to/file.txt
설명하다
printf $0
:현재 줄을 인쇄합니다(개행 없이).printf ($0=="")? "\n" : " "
: 현재 줄이 비어 있으면($0=="")?
개행 문자를 인쇄하고"\n"
, 그렇지 않으면 공백을 인쇄합니다" "
.- 이렇게 하면 마지막 줄에 후행 공백이 인쇄되는데 이는 문제가 될 수도 있고 그렇지 않을 수도 있습니다.
옵션 2
그러나 세 번째 줄만 끊고 싶다면,
awk '{printf $0; printf (NR%3=="0")? "\n" : " "}' /path/to/file.txt
설명하다
(NR%3=="0")
: 여기의 조건은 줄 번호NR
mod가3
0인지 여부를 테스트합니다. 즉, 입력 줄 세 개마다 개행 문자를 인쇄하고, 그렇지 않으면 공백만 인쇄합니다.
답변3
방법 1: 단락 모드에서 Perl을 호출 -00
하고 ORS=\n을 설정하고 -l
명시적 인쇄를 사용하여 파일 읽기 모드를 활성화합니다 -n
. https://로 시작하는 현재 레코드를 선택하고 $_
해당 레코드의 끝 부분을 다음 레코드로 채웁니다 <>
. 마지막으로, 추가된 현재 레코드의 개행 문자는 제거되고 나머지는 표준 출력으로 인쇄됩니다. ORS는 현재 레코드에 추가됩니다.
perl -ln -00e 's/$/$".<>/e and print tr/\n//dr if m|^https://|' file.txt
이 방법에서는 https:// 라인이 발견되면 루프를 설정하고 찾은 빈 라인을 비어 있지 않은 첫 번째 라인에 계속 추가합니다. 그 동안 우리는 빈 줄을 계속 삭제합니다.
sed -ne '
\|^https://|!d
:loop
N
s/\n$//
tloop
s/\n/ /p
' file.txt
산출
https:// arkit.co.in/ Path Read (03/07/2017) Path: /website/upload/file.txt
https:// arkit.co.in/ Path Read (04/07/2017) Path: /website/upload/file1.txt