2012-07-16 8 views
2

나는이처럼 보이는 파일이 : 1-4 독특하고 단지 문자와 숫자를 모두는 나오지 사용

$variable['keyword1'] = 'value1'; 
$variable['keyword2'] = 'value2'; 
$variable['keyword3'] = 'value3'; 
$variable['keyword4'] = 'value4'; 

키워드를.

값 1-4 수도 있고 고유하지 않을 수 있으며 문자, 숫자의 조합, 특수 문자 나 값 1 또는 값 2 또는 VALUE3를 추출 할 수 있어야합니다

될 수 또는 값이이고 $ somevariable로 저장하십시오. 그래서 키워드는 분명히 sed 명령에서 정의해야 원하는 값을 얻을 수 있습니다. 어떻게 한 sed 라이너를 사용하여 그렇게 할 수 있습니까? 그렇게 열심히 보지는 않지만 그것을 깰 수는 없습니다. 여러 시간 동안 인터넷 검색 및 다양한 조합을 시도했습니다.

+1

그래서 당신은 dif로 채워진 파일 중에서 ** value1 ** 만 원합니다. ferent * 값 *? –

답변

3
sed -n "s/\$\w\+\['keyword1'\]\s*=\s*'\([^']\+\)';/\1/p" inputfile 

저장하기 : 파일이 당신이 설명 정확히 같다

somevariable=$(sed -n "s/\$\w\+\['keyword1'\]\s*=\s*'\([^']\+\)';/\1/p" inputfile) 

경우, 당신은이를 사용할 수 있습니다

grep keyword1 inputfile | sed "s/.*=\s*'\([^']\+\)';/\1/" 

또는 더 나은 아직 : (감사 윌리엄)

sed "/keyword1/s/.*=\s*'\([^']\+\)';/\1/" inputfile 
+0

당신은 그것을 못 박았습니다. 완벽하게 작동하는 것 같습니다. 나는 너무 빨리 대답 할 것이라고 생각하지 않았다. 너에게 충분히 감사 할 수 없다. 그렇습니다. 파일은 설명 된 것과 똑같지 만, 모든 스크립팅에 사용하려고하기 때문에 sed를 사용하는 것을 선호합니다. – fred

+2

grep을 sed에 파이프 할 필요가 없습니다 (* ever *). 'grep foo | sed '/ a/b /'','sed '/ foo/s/a/b /'' –