리눅스 스크립트 질문드립니다.

글쓴이: 익명 사용자 / 작성시간: 화, 2023/03/28 - 10:49오전
고수님들 안녕하세요..
밑에 파일에서 여러 숫자를 동시에 치환을 해야하는데요!
5-?? 10-?? 15-??
4-?? 9-?? 14-??
3-?? 8-?? 13-??
2-?? 7-?? 12-??
1-?? 6-?? 11-??
입력 예)
read -p "숫자입력 : " ("1 2 8 11 15"를 입력 했을 때)
출력 예) (해당되는 자리를 "??"로 치환)
5-?? 10-?? ??
4-?? 9-?? 14-??
3-?? ?? 13-??
?? 7-?? 12-??
?? 6-?? ??
이렇게 숫자를 입력받아
sed를 사용하여 $REPLY에 해당 되는 자리($REPLY-??)를 "??"로 치환하려고 합니다.
sed가 하나씩 밖에 처리가 안되어 여러개를 처리하지 못하고 있는 상황인데
입력 갯수에 상관없이 "1 2 8 11 15" 이런식으로 입력을 받아 동시에 "??"로 치환 가능할지 여쭙니다..
부탁드립니다 고수님들 ㅠㅠ
Forums:
네, 가능합니다! 입력된 숫자들을 기반으로 한 줄에서
네, 가능합니다! 입력된 숫자들을 기반으로 한 줄에서 sed를 사용하여 여러 개의 치환을 동시에 처리할 수 있습니다. 다음의 스크립트를 참고해 주세요.
```bash
#!/bin/bash
read -p "숫자입력 : "
IFS=' ' read -ra numbers <<< "$REPLY"
sed_command="sed"
for number in "${numbers[@]}"; do
sed_command+=" -e 's/$number-../??/g'"
done
echo -e "5-?? 10-?? 15-??\n4-?? 9-?? 14-??\n3-?? 8-?? 13-??\n2-?? 7-?? 12-??\n1-?? 6-?? 11-??" | eval $sed_command
```
이 스크립트는 입력된 숫자들을 기반으로 sed 명령어를 생성하고 이를 사용하여 각 숫자에 해당하는 위치를 "??"로 치환합니다. 입력된 숫자와 상관없이 작동합니다.
정말 정말 감사합니다..ㅠㅠㅠㅠㅠ
정말 정말 감사합니다..ㅠㅠㅠㅠㅠ
위 답글은 올려주신 질문 그대로 chagtp에 넣어서
위 답글은 올려주신 질문 그대로 chagtp에 넣어서 얻은 결과를 그대로 복붙한 것 입니다.
이곳 게시판의 웬만한 질문은 모두 자연스럽게 답변하는 수준이네요.
자연스럽기는 한데...
자연스럽기는 한데...
정규표현식 부분에 단 몇 글자가 아쉽군요.
하긴 "다음의 스크립트를 참고해 주세요." 라고 했으니까요.
연습문제로 남깁니다.
======
자연스럽기 때문에 대단하다고 해야 하는지,
자연스럽게 틀린 답을 알려줄 수 있기 때문에 위험하다고 해야 하는지.
뭐, 둘 다 맞다고 할 수도 있겠네요.
댓글 달기