저는 Linux를 처음 접했고 파일에 200줄이 있습니다. 이 파일에서 다음과 같은 특정 단어를 바꿔야 합니다.기존 단어: foo 새 단어: bar
몇몇 블로그를 읽었습니다. 작동한다는 것은 알고 있지만 sed
쉘 스크립트를 사용하여 수행하는 방법은 모르겠습니다.
sed 's/foo/bar/' /path to a file
스크립트를 작성해야 하는데 파일을 입력으로 가져오는 방법을 모르거나 변수에 저장하고 특정 단어를 변경해야 하는지 모르겠습니다.
스크립트는 파일 이름뿐만 아니라 특정 단어도 변경해야 합니다. 예: 입력 파일 이름: cat home.txt(바꿀 단어 --> cat) 출력 파일 이름: Dog home.txt(Cat은 Dog로 바꿔야 함)
도와주세요!
답변1
foo
문자열을 변경 하려면 bar
다음을 사용할 수 있습니다.
#!/bin/bash
# the pattern we want to search for
search="foo"
# the pattern we want to replace our search pattern with
replace="bar"
# my file
my_file="/path/to/file"
# generate a new file name if our search-pattern is contained in the filename
my_new_file="$(echo ${my_file} | sed "s/${search}/${replace}/")"
# replace all occurrences of our search pattern with the replace pattern
sed -i "s/${search}/${replace}/g" "${my_file}"
# rename the file to the new filename
mv "${my_file}" "${my_new_file}"
검색 패턴이 단어의 일부와 일치하면 해당 부분도 대체됩니다. 예를 들면 다음과 같습니다.
"나에겐 애벌레가 있어요."
검색 문자열은 "cat"이고 대체 문자열은 "dog"입니다.
"개 기둥이 있어요."
불행하게도 이러한 상황을 피하는 것은 결코 쉬운 일이 아닙니다.