옵션 1

옵션 1

다음 줄이 포함된 텍스트 파일이 있습니다.

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)를 시작하여 새 행(있는 경우)을 추가합니다( ) . . 마지막으로 모든 것을 한 줄에 넣기 위해 줄 바꿈을 공백으로 바꿉니다( ).$!NPath:/Path:/!bas/\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"): 여기의 조건은 줄 번호 NRmod가 30인지 여부를 테스트합니다. 즉, 입력 줄 세 개마다 개행 문자를 인쇄하고, 그렇지 않으면 공백만 인쇄합니다.

답변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

관련 정보