파이프를 통해 외부에서 들어오는 입력을, bash script내부에서 어떻게 다룰 수 있나요?

글쓴이: 익명 사용자 / 작성시간: 금, 2018/08/10 - 8:33오후
cat text | sed 's/pat/rep/g'
이런 형태가 아니라. bash script를 작성한다고 했을때(예제를 위해 작성한 경우라 효율적이지는 않습니다.)
#!/bin/sh ## substitution.sh 내부입니다. sed 's/pat/rep/g' #이 부분에서 파이프를 통해 들어오는 입력 처리는?
다시한번 말씀드리지만, 좋은 예시는 아닙니다. 다만 bash script내부에서 파이프를 통해 외부로부터 들어오는 입력을 어떻게 핸들링 할 수 있는지가 궁금합니다.
위 경우 다음처럼 사용하고 싶습니다.
cat txt | substitution.sh
Forums:
.
bash script가 아니라 sed script를 배워야겠지요.
.
꼭 bash를 써야 겠다면 아래와 같이 스크립트를 작성합니다. 답변을 얻었으면 답글을 다는 것이 예의일텐테, 가타부타 말이 없어요.
아 답글 감사합니다.
아 답글 감사합니다.
내 제 질문은 grep, awk, sed 등 많은 프로그램들이 파이프를 통해 들어오는 데이터를 처리하는데, 과연 일반 스크립트는 그런 걸 어떻게 처리할 수 있을 까였습니다.
뭐 그렇다고 제가 grep, awk, sed의 소스코드를 분석할 실력이 되는 것도 아니고요.
좀 찾아보니 이런것도 있군요.
cat /dev/stdin으로 처리할 수 있다는 처음 알게되었습니다.
오 세상에... cat /dev/stdin | sed
오 세상에...
cat /dev/stdin | sed 's/tiger/lion/g'
라니... -_-;;;;그냥
sed 's/tiger/lion/g'
하면 됩니다.파이프의 기본 전제는 각 프로그램들이 표준 입력(stdin)을 읽고 처리해서 표준 출력(stdout)에 쓴다는 것입니다. grep, awk, sed 모두 (다르게 설정하지 않으면) 원래 그렇게 동작합니다. 소위 Standard streams이라고 불리는, Unix와 기원을 같이 하는 유서깊은 인터페이스입니다.
https://en.wikipedia.org/wiki/Standard_streams
a | b와 같이 연결하면 shell에 의해 a의 표준 출력이 b의 표준 입력에 연결될 뿐입니다. a와 b는 그저 하던 대로 표준 입력을 읽고 표준 출력에 쓸 뿐, 파이프에 따로 읽거나 쓰기 위한 다른 인터페이스가 있지는 않습니다.
cat txt | substitution.sh
와 같이 실행했으면, 이미 substitution.sh의 표준 입력이 cat txt의 표준 출력과 연결된 상태입니다. substitution.sh가 그 입력을 sed에 그대로 넘겨 주고 싶으면, 그냥 그대로 실행하면 되는 겁니다.cat 남용에 대해서도 하고 싶은 말이 있지만, 링크로 갈음합니다: Useless Use of Cat!
http://porkmail.org/era/unix/award.html#uucaletter
헉. 사실 오늘 cat txt | .
헉. 사실 오늘 cat txt | ./substitution.sh 로 여러번 테스트를 한다고 했었거든요.
그런데, 안돼서 뭔가 특수 변수가 되었건 내부에서 input를 특정해줘야 한다고 생각해서 질문 했던거였는데,
다시 새로 코드 짜서 하니 되네요..... 민망합니다.
여튼 감사합니다.
아니 근데 무슨 10:16분에 답을 달고, 그것도
아니 근데 무슨 10:16분에 답을 달고, 그것도 bash script에서 파이프를 어떻게 처리하는지가 궁금했었던 거고, sed는 파이프를 이용하는 프로그램으로서 보여준것 뿐인데, sed프로그램을 배워야 한다니......
10:16분에 답글달고 10:28분까지 그에 대한 반응이 없자, 예의 운운이라니......
그 12분 동안 무한루프돌며 자기 답들에 고마움을 표시하는지를 매 밀리센컨마다 체크하며 기다리셨나.
인터넷에서 질문을 올리면, 답글이 올라왈때까지 대기하고 있다가 답글 올라오면 10분내로 고맙다고 하는게 예의? 언제부터?
그대는 그리 살아오셨나? 모든 고마움의 표시는 10분내로, 그렇게 못하면 몰염치가 당연하듯이?
내가 한국시간으로 오전 1:00시에 "아 답글 감사합니다."라고 올렸는데, 지금 약 6시간 정도 흐른 것 같은데, 뭐 그렇다고 "아니 뭐 이런것 가지고 고맙다니요. 별말씀을 다..."라고 반응하지 않는다고 해서, 난 당신을 예의 없다고 생각하지는 않아요.
특히 while dead로 입력을 받아들이는 부분, "참 괜찮다, 나도 저렇게 생각해 낼 수 있을까"라고 생각했습니다.
감사합니다.
ㄹㅎ
남 얘기 말고 너나 잘 해.6
넌 또 뭐냐 병god아
넌 또 뭐냐 병god아
댓글 달기