2015-01-22 2 views
0

나는 bash 스크립트에서 할 일이 있습니다. 파일을 읽고 각 단어를 모두 저장해야합니다. 맞춤형을 배열로 가져와야합니다. 내 배열에 포함됩니다. {"Custom_KEHJEO" "Custom_TTT_LEJEB_Adaptor" "ustom_SDE_Universal_Adaptor_EEEEEE"}정규식을 사용하여 패턴을 찾으십시오.

9 번 줄부터 sed 명령을 사용하여 파일의 내용을 읽을 수는 있지만 '사용자 정의 *'문자열을 가져 와서 배열에 저장할 수 없습니다.

파일 내용이 ~ folders.txt라고하는 내용이 있습니다. 9 번 줄부터 시작하여 항상 다음과 같은 텍스트가 있습니다. ... ... 마지막 3 줄도 정확하게 끝납니다. 날짜 변경을 제외하고는 아래에 있습니다.

Custom_KEHJEO 
Custom_TTT_LEJEB_Adaptor 
Custom_SDE_Universal_Adaptor_EEEEEE 
Custom_SIL_XXXXXXX 
Custom_SIL_UUUUUUU 
SDE_PSFT_89_Adaptor 
SDE_SBL_78_Adaptor 
UA_SDE 
SILOS 
SDE_SBL_Vert_811_Adaptor 
SDE_JDEE1_90_Adaptor 
SDE_Universal_Adaptor 
Custom_SIL_XJGADWG 
Custom_SIL_UUUUUUAAFE 
SDE_ORAR12_Adaptor 
SDE_JDEE1_811SP1_Adaptor 
SDE_ORAR1212_Adaptor 
SDE_ORA11510_Adaptor 
SDE_SBL_80_Adaptor 
Custom_SIL_MKEIHE 
Custom_SDE_GAHWYWB 
.listobjects completed successfully. 

Completed at Thu Jan 22 12:46:39 2015 
+0

귀하의 목표가 더 명확히해야한다고 생각합니다. 배열로 포착 된 후 그 문자열이 어떻게 될 것입니까? 디스크에있는 파일에 해당 파일을 쓸 수 있습니까? 다른 실행 파일의 매개 변수로 제공 하시겠습니까? – rchang

+0

각각의 문자열을 입력으로 기대하는 명령이 있기 때문에 다른 명령에서이 명령을 사용합니다. 즉, -for 루프를 사용하여 배열의 각 문자열을 해당 명령의 입력으로 제공합니다. .. – Shanker

답변

1

이 작업을 수행하는 sanest 방법은 아마 grep입니다 :

arr=($(grep ^Custom filename)) 

# arr is now a bash array containing all tokens that begin with Custom 
echo "${arr[@]}" 

당신은 나오지도 그것을 또한 할 수 있었다 :

arr=($(sed '/^Custom/!d' filename)) 

이 ...하지만 그렙이 정말 위해 만들어졌다. 이것은 한 줄에 하나의 토큰이있는 파일 구조에 달려 있음을 유의하십시오.

0

이렇게하면 각 문자열이 매개 변수로 다른 실행 파일에 전달됩니다.

INPUTFILE=folders.txt 
for string in `tail -n+9 $INPUTFILE | grep ^Custom`; do 
    othercommand $string 
done 

방금 ​​나는 @ Wintermute의 대답을 보았습니다. 이것은 좋은 것입니다. 실제로 다른 명령을 전달하는 것 이외의 목적을 위해 어레이에서 이러한 문자열을 캡처해야하는 경우 @ Wintermute가 더 적합합니다.

관련 문제