2010-06-30 4 views
1

정규 표현식에서 $ 1 인수로 지정된 파일을 검색하고 발견 된 서브 패턴을 사용 가능한 변수에 기록하는 쉘 스크립트를 작성하려고합니다.string에서 regexp 결과를 추출하여 변수에 쓰십시오.

의 내 스크립트가 'dosth.sh'라고 말할 수 있도록 나는 지금 스크립트가해야한다 'dosth.sh plot.gp'실행하면 I 라인

set output 'test.tex' 

가진 파일 'plot.gp을'이 plot.gp에서 'test.tex'를 추출하여 변수에 씁니다.

어떻게 grep 또는 다른 사람이 가능합니까?

감사와 안부 월 올리버

+0

당신이 사용하는 쉘? – Johnsyweb

+0

Mac OS X의 유닉스 쉘. 그러나 나는 그것을 스스로 알아 냈다. – janoliver

답변

0

당신은 (당신이 따옴표를 유지 않습니다

value=`grep '^set output' $x | cut -d' ' -f 3` 

의 라인을 따라 뭔가를 시도 할 수 $value

+0

감사합니다. 그게 가치있는 것 말고, 내가 원하는 것 거의. – janoliver

0

dosth.sh :

#!/bin/bash 
VALUE=`cat $1 | grep <your regexp here>` 
echo $VALUE 

으로 사용할 수 있습니다.

dosth.sh :

$ ./dosth.sh a.txt 

후 발견 된 문자열은 또한 (스크립트에서 파일 이름을 요청) 일부 인수로 정규 표현식을 통해 줄 수있는 변수 VALUE

에 저장됩니다

$ ./dosth.sh here comes my * pattern 
:처럼 사용할 수 있습니다

#!/bin/bash 
echo -e "Which file do you want to grep?" 
read FILENAME 
args=("[email protected]") 
VALUE=`cat $FILENAME | grep $args` 
echo $VALUE 

어쩌면이 링크는 당신을 위해 도움이 될 것입니다 : Link

+0

해답을 가져 주셔서 감사합니다. 그러나 문제는 구멍 패턴이 아닌 변수의 하위 배치를 패턴에 저장하고자하는 것입니다. – janoliver

2
value=`cat $1 | grep -e 'set output' | cut -d'"' -f 2` 

는 "대신에 '의 사용과 라인 위의 작업을 수행합니다.

+0

값 = 고양이 $ 1 | grep -e '출력 설정'| cut -d \ "-f 2 –

+0

-1이 문제는 서식 문제를 제외하고는 여러 가지가 있습니다. – tripleee

0
variable=$(sed -n '/^set output/ s/[^\x27]*\x27\([^\x27]*\)\x27/\1/p' "$1") 
0

value=$(awk -F"'" '$1 == "set output " {print $2}' somefile)

관련 문제