저는 Unix를 처음 접했고 sed 명령을 배우고 있습니다. 파일에서 숫자를 검색하여 바꾸는 아주 작은 스크립트를 작성해야 합니다. grep을 시도한 다음 파일에서 특정 전화번호를 제거한 다음 다른 전화번호를 추가했습니다. 하지만 스크립트에서 sed를 사용하여 교체할 수 있다는 말을 들었습니다. 나는 명령줄에서 sed 명령을 사용하여 무언가를 검색하고 바꾸는 방법을 알고 있습니다. 하지만 사용자가 숫자를 검색한 다음 이전 숫자를 대체하려는 숫자를 입력할 수 있는 스크립트를 어떻게 작성합니까?
지금까지 내가 한 일은 grep을 사용하여 숫자를 찾는 것이었습니다. 작동합니다. 하지만 이제는 사용자가 새 번호를 추가하여 이전 번호를 대체할 수 있도록 하는 방법에 대해 고민하고 있습니다. 나는 grep을 sed로 파이핑하거나 그 반대로 시도했습니다. 지금까지 행운이 없습니다. 중복된 것 같지만, :/ 하지만 정말 답답해요. 어떤 도움이라도 대단히 감사하겠습니다 :D.
답변1
이것이 출발점입니다:
#!/bin/bash
PHONEFILE=/path/to/your/file
# Prompt for search and replace numbers
# and simply exit if either is empty
# (in your actual script, you'll need to flesh this out with
# proper validation of phone number formats, error messages etc.!)
read -p "Number to search for: " oldnum
if [ ! "$oldnum" ]; then exit; fi
read -p "Replace with number: " newnum
if [ ! "$newnum" ]; then exit; fi
# Search and replace, change the phone file directly
# and create a backup of the previous version with .bak extension
# This assumes a file containing one phone number per line
sed -i .bak 's/^'"$oldnum"'$/'"$newnum"'/' $PHONEFILE