sed: 두 줄 일치

sed: 두 줄 일치

레코드가 두 줄로 나누어진 텍스트 파일이 있습니다. 나는 그들을 일렬로 세우고 싶다. 기록은 다음과 같습니다.

2013-07-29
 apt-get install git
2013-07-29
 apt-get install rsync
2013-07-31
 apt-get install nmap
2013-08-02
 apt-get install cifs-utils
2013-08-05
 apt-get install telnet

다음 정보를 얻고 싶습니다.

2013-07-29 apt-get install git
2013-07-29 apt-get install rsync
2013-07-31 apt-get install nmap
2013-08-02 apt-get install cifs-utils
2013-08-05 apt-get install telnet

시도했지만 sed두 행을 일치시킬 수 없습니다. 팁 sed이나 더 나은 도구가 있나요?

답변1

sed 'N;s/\n/ /'
  • N다음 입력 라인을 패턴 공간에 연결
  • s/\n/ /줄을 공백으로 구분하는 줄 바꿈을 바꿉니다.

또는:

sed -n 'N;s/\n/ /;/regex/p'
  • -n마지막 명령으로 패턴 공간의 자동 인쇄를 비활성화합니다.
  • /regex/p정규식과 일치하는 줄을 인쇄합니다.

g세 개 이상의 줄을 연결하려면 대체 수정자를 사용하세요(예: ) N;N;N;s/\n/ /g.

답변2

이 줄 apt-get앞에 공백이 있는 것 같습니다. 설명하다:

sed -e :a -e '$!N;s/\n / /;ta' -e 'P;D' inputfile

원하는 결과를 얻어야합니다.

또는 다음을 사용할 수 있습니다 paste.

paste -d' ' - - < inputfile

관련 정보