2017-10-25 2 views
1

원하는 작업을 수행하는 데 문제가 있습니다.Curl/sed 명령이 입력을 정확하게 처리하지 못합니다.

read -p "URL to read: " U 

read -p "Word to fin: " O 

read -p "Filename: " F 

curl -O $U | sed "s/\<$O\>/\*$O\*/g" > $F.txt 

그래서 기본적으로 내가 원하는 사용자 입력에 의해 지정된 단어를 찾기 위해 일종의 그것을 통해 다음의 URL에서 .txt 파일을 얻을 수 curl을 사용하는 것입니다. 그런 다음 해당 단어를 모두 *으로 표시하고 사용자가 지정한 파일에 넣습니다. Linux에서 거의 동일한 코드가 작동하지만 내 Mac에서는 작동하지 않습니다. 누구나 아이디어있어?

답변

1

두 가지 문제 :

  • -Ocurl 저장 다운로드 한 파일을 만들고, stdout출력하지 그것.
  • 단어 경계 메타 문자 \<\>은 GNU extension입니다. BSD sed에서 [[:<:]][[:>:]]을 대신 사용할 수 있습니다. 이것은 OSX에서 작동해야

:

curl "$U" | sed "s/[[:<:]]$O[[:>:]]/\*$O\*/g" > $F.txt 
+1

오, 좋아. 내가 didnt하는 문제는 그것이 지정하지 않았다면 여전히 새로운 파일에 전체 http : //....../ txt 파일을 저장한다는 것입니다. 그것은 내가 찾으려고 노력하고있는 단어를 찾지 못합니다 .. 정말 고마워요,이 도움이! – Theskils