bash - 터미널에 에코 인쇄

bash - 터미널에 에코 인쇄

나는 bash 스크립팅에 익숙하지 않기 때문에 매우 간단할 것이라고 생각합니다. URL을 실행한 다음 curl특정 ID를 사용하여 출력을 구문 분석한 grep다음 이를 텍스트 파일에 추가하는 스크립트를 작성했습니다. 텍스트 파일에 추가하면 ID가 공백으로 구분되므로 다음과 같이 공백을 줄바꿈으로 바꾸려고 합니다.

#!/bin/bash

IDS=$(curl -v --silent "http://example.com" 2>&1 | grep -Eo 'data-user_id="[0-9]+"' | grep -Eo "[0-9]+")

echo ${IDS} >> "ids"
sed 's/ /\n/g' "ids"

그런데 실행해 보면 파일의 출력이 터미널에 기록되는 것을 볼 수 있는데, 마지막 줄( sed)을 제거하면 출력이 사라집니다. 예전에 사용해봤는데 tr똑같은 현상이 있었어요. 이런 일이 발생하지 않게 하려면 어떻게 해야 합니까?

답변1

sed지정한 대체 콘텐츠를 사용하여 파일이 인쇄되고 있습니다.

더 나은 아이디어는 다음과 같습니다.

#!/bin/bash

IDS=$(curl -v --silent "http://example.com" 2>&1 | grep -Eo 'data-user_id="[0-9]+"' | grep -Eo "[0-9]+")

echo "$IDS" | tr ' ' '\n' >> "ids"

$IDS파일에 추가하기 전에 개행 번역에 공백을 에코하고 적용합니다 .

답변2

펄로 시도해 보세요

IDS=$(curl -sv http://example.com |& perl -lne 'print $1 if /data-user_id="(\d+)"/')

관련 정보