2012-11-25 7 views
1

단어 단위로 텍스트 파일을 읽고 싶습니다. 문제 : "/ *"가 포함 된 단어가 있습니다. 이러한 단어는 스크립트가 루트 디렉토리의 파일을 반환하도록합니다. 나는 시도 : 에코/고양이/등 ... 와Cygwin bash : 단어 단위로 파일 읽기

for word in $(< file) 
do 
    printf "[%s]\n" "$word" 
done 

그리고 다른 여러 가지 조합을이 파일의 경우 :

[/bin] 
[/cygdrive] 
[/Cygwin.bat] 
... 
[example] 
[file] 

것은 쉬워야한다 :

/* example file 

I 출력 다음 얻을 그러나 그것은 나를 미치게합니다.

답변

1

을 사용하는 것입니다. bash -f으로 새 셸을 실행하고 다시 시도하십시오. http://wiki.bash-hackers.org/syntax/expansion/globs을 참조하거나 man bash (으)로 맨 페이지로 이동하십시오. man bash | col -b >bash.txt 일 수 있습니다.

for word in "$(< file)" 
do 
    echo "$word" | sed -E 's/(\S*)(\s)/[\1]\2\n/g' 
done 

출력 :

[/*] 
[example] 
[file] 
+0

'set -o noglob'가 나를 위해 일했습니다. 감사합니다. – Mixer

0

이 정보가 도움이 될 수 있습니다.

# skip blank lines and comment lines begining with hash (#) 

cat $CONFIG_FILE | while read LINE 
    do 
    first_char=`echo $LINE | cut -c1-1` 
    if [ "${first_char}" = "#" ] 
    then 
     echo "Skip line with first_char= >>${first_char}<<" 
    else 
    : 
    echo "process line: $LINE" ; 
    fi 

done 

또 다른 방법은 case 문 당신은 경로명 확장 대체 (globbing)을 해제해야

+0

쓸모없는 사용이 발견! –

1

방법이 솔루션에 대해, $(< file) 주위에 따옴표가 확대되는 *sed을 중지 포맷을 출력을 사용됩니까?

while read -a a; do printf '[%s]\n' "${a[@]}"; done < file 

출력 :

[/*] 
[example] 
[file] 
이 고양이의
0

어떻게 이런 일에 대해 필요에 따라

관련 문제