sed
과 관련된 내 명령에 개행 문자가 있습니다.sed에서 개행 문자 처리하기. 명령은 파이썬에서 호출했습니다
시나리오는 다음과 같습니다. 내가 배쉬에서 다음 명령을 실행하면, 내가 얻을 : 당신이 볼 수 있듯이
cat /proc/cpuinfo | egrep "core id|physical id" | tr -d "\n" | sed -e s/ph/\\nPH/g | grep -v ^$
PHysical id : 0core id : 0
PHysical id : 0core id : 1
에서, sed
명령은 NPH \ 와 산도 교체, 나는 각각의 '실제 ID에 대한 새로운 라인을 얻을 수 있도록. .. '
이제 파이썬에서이 bash 명령을 호출합니다. 다음은 모든 관련 라이브러리 가져 오기가 포함 된 코드의 작은 스 니펫입니다.
nPHysical id : 0core id : 0nPHysical id : 0core id : 1
한 줄에 :
import subprocess
cmd = 'cat /proc/cpuinfo | egrep "core id|physical id" | tr -d "\n" | sed -e s/ph/\\nPH/g | grep -v ^$ '
subprocess.call(cmd, shell=True, universal_newlines=True, stdin=subprocess.PIPE)
문제
내가 얻을 수 있다는 것입니다. '\ n'은 n으로 처리되지 않으며 PH 앞에 인쇄 된 것으로 보입니다.출력을 멋지게 출력해야 나중에 라인을 계산하는 명령에 | sort | uniq | wc -l
을 추가 할 수 있습니다.
Bash-and-Python 전문가의 도움을받을 수 있습니다.
감사합니다.
탈출구에서 벗어나기 만하면됩니다. '\\\\ n' 또는 sed 명령을 인용 부호'sed -e \ 's/ph/\\ nPH/g \''로 둘러 쌉니다. –
'egrep','awk'와 같이 데이터 자체를 읽을 수있는 프로그램에서'cat'을 사용해서는 안됩니다.'cat/proc/cpuinfo | egrep "코어 ID | 물리적 ID"| tr -d "\ n"| sed -e s/ph/\\ nPH/g | grep -v^$'를 awk/physical id/{f = $ 0}/core id/{print f, $ 0} '/ proc/cpuinfo'로 변경하십시오. – Jotne