![한 줄에 여러 검색 패턴 + 텍스트 작업 인쇄](https://linux55.com/image/94527/%ED%95%9C%20%EC%A4%84%EC%97%90%20%EC%97%AC%EB%9F%AC%20%EA%B2%80%EC%83%89%20%ED%8C%A8%ED%84%B4%20%2B%20%ED%85%8D%EC%8A%A4%ED%8A%B8%20%EC%9E%91%EC%97%85%20%EC%9D%B8%EC%87%84.png)
내 출력은 다음과 같습니다
/map1/firmware1 Targets Properties
version=2.44
date=Jul 19 2016
name=iLO 4
내가 원하는 출력은 다음과 같습니다.
version=2.44 date=Jul_19_2016
출력을 한 줄로 결합하기 위해 xargs
.
cat test | egrep '(version=|date=)' |xargs
date=Jul 19 2016
답변1
dos
OP의 문제는 스타일 라인 엔딩 때문인 것 같습니다 ...
예:
$ cat -e chk
/map1/firmware1 Targets Properties^M$
version=2.44^M$
date=Jul 19 2016^M$
name=iLO 4^M$
$ egrep '(version=|date=)' chk | xargs
date=Jul 19 2016
unix
스타일이 지정된 줄 끝 으로 변환한 후:
$ perl -i -pe 's|\r\n|\n|' chk
$ cat -e chk
/map1/firmware1 Targets Properties$
version=2.44$
date=Jul 19 2016$
name=iLO 4$
$ egrep '(version=|date=)' chk | xargs
version=2.44 date=Jul 19 2016
답변2
sed
한 줄 사용
$ sed -n '/version/ {N; s/[\r\n]//g; p}' filename
version=2.44 date=Jul 19 2016
설명하다
/version/
패턴을 일치시키고 중괄호 블록을 실행합니다{ }
.N
입력 파일에서 다음 줄을 가져와 패턴 공간에 추가합니다.s/[\r\n]//g
패턴 공간에서 모든 개행 문자와 캐리지 리턴을 제거합니다.p
패턴 공간을 인쇄합니다.