웹개발 및 최신 테크 소식을 전하는 블로그, 웹이즈프리

HOME > linux

[리눅스] 파일 텍스트를 찾아 바꾸는 방법 알아보기

Last Modified : 2023-08-30 / Created : 2023-08-29
1,271
View Count
리눅스에서 특정 파일을 찾아서 내용을 바꾸고 싶은 경우가 있습니다. 예를들어 아래의 language.json파일에서 vue 텍스트를 찾아 nuxt로 변경하길 원한다면 어떻게 해야할까요?

@ language.txt
{
  "framework": "vue"
}

위에서 vue 텍스트를 아래와 같이 변경하려고 합니다.
{
"framework": "nuxt"
}

이 경우 파일의 내용을 바꾸는 몇 가지 방법이 존재합니다. 아래는 sed 명령어를 사용하여 리눅스에서 특정 텍스트를 다른 텍스트로 바꿔보도록 하겠습니다. 또한 정규 표현식을 사용하는 방법도 함께 알아봅니다.





# 리눅스 파일 내용 바꾸기, sed


sed는 특정 파일 내에 위치한 내용에서 특정 문구를 찾아 변경할 수 있도록 도와줍니다. 이 때 간단한 문법은 아래와 같습니다.

sed option 's/targetText/replaceText/' targetFile

보시면 sed 뒤에 옵션이 있고 다음의 콤마에는 / 기호로 구분된 텍스트를 입력 가능합니다. 여기서 각각 해당하는 키워드는 다음과 같이 사용됩니다.

option // [Optional] 옵션 설정이 필요한 경우 사용함
s // 텍스트를 찾아 변경함
targetText // 대상이 될 텍스트
replaceText // 바뀌게 될 텍스트
targetFile // 대상 파일이름

이제 어떻게 사용하지는 간단한 예제를 사용하여 아래에서 알아봅니다.


! sed 텍스트 변경 예제보기


몇 가지 예제를 만들고 일반적인 경우와 정규표현식을 사용한 경우 파일을 변경하는 경우 등을 각각 알아봅니다.

apple을 찾아 orange로 바꾸는 방법
file.txt 파일에서 apple을 찾아 orange로 바꾸는 방법입니다.
sed 's/apple/orange/' file.txt

가장 간단한 방법입니다.


일치하는 모든 apple을 찾아 orange로 바꾸는 방법
위 예제는 하나의 텍스트만 변경합니다. 전체 변경을 위해서는 바꿀 텍스트의 / 뒤에 g를 추가합니다.
sed 's/apple/orange/g' file.txt

이제 모든 apple이 orange로 변경됩니다.


파일 변경을 위해서 옵션으로 - i 플래그 사용하기
-i 파일을 사용하지 않으면 파일을 저장하지는 않고 출력만 수행합니다. 실제로 파일 변경과 저장을 하려면 -i 플래그를 옵션값으로 사용합니다.
sed -i 's/apple/orange/g' file.txt

변경 사항이 출력되면서 동시에 파일이 변경된 것을 알 수 있습니다.


정규표현식 사용하여 apple 또는 banana인 경우 orange로 변경하기
기본적으로 정규표현식이 사용되지만 최근의 모든 정규표현식을 적용하기 위해서는 -E 옵션이 필요합니다. 예를들어 + 기호, |(파이프라인) 기호 등을 사용하기 위해서 아래와 같이 -E 옵션을 추가해야하죠.
sed -E 's/apple|banana/orange/g' file.txt

이제 apple 또는 banana를 찾아 변경할 수 있는 파이프라인 기호 사용도 가능해졌습니다.


여기까지 리눅스에서 파일의 내용, 텍스트 변경을 위한 방법을 간략하게 알아보았습니다.

Previous

Ubuntu에서 크롬 브라우저 사용하는 방법 알아보기

Previous

Ubuntu 22 와이드 모니터 해상도 사용 불가 이슈 수정