내 출력은 다음과 같습니다
/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
패턴 공간을 인쇄합니다.