레코드가 두 줄로 분할되는 텍스트 파일이 있습니다. 한 줄로 정리하고 싶습니다. 기록은 다음과 같습니다.
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