문자열 앞과 뒤의 공백을 제거하고 파일에서 문자열을 단일 공백으로 바꿔보세요.

문자열 앞과 뒤의 공백을 제거하고 파일에서 문자열을 단일 공백으로 바꿔보세요.

bash 스크립트의 일부로 file1.txt에서 문자열을 제거하려고 합니다.

예를 들어 이 파일에는 다음이 포함됩니다.

@some_group1 = take.me bake.shake test.test push.pull
@some_group2 = test.test take.me bake.shake push.pull
@some_group3 = take.me bake.shake push.pull test.test

내가 원하는 출력은 다음과 같습니다.

@some_group1 = take.me bake.shake push.pull
@some_group2 = take.me bake.shake push.pull
@some_group3 = take.me bake.shake push.pull

sed 명령을 사용해 보았지만 제대로 작동하지 못했습니다.

sed -i 's/\[?]\$username\[?]\/  /g' file1.txt

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

답변1

sed해결책:

username="test.test"
sed "s/ *$username */ /" file

산출:

@some_group1 = take.me bake.shake push.pull
@some_group2 = take.me bake.shake push.pull
@some_group3 = take.me bake.shake push.pull 

답변2

작은따옴표를 사용하고 변수 이름을 삽입하려면 다음을 수행하십시오.

sed 's/ '"$username"'//' file1.txt

별로 예쁘지는 않지만 때로는 유용할 수도 있습니다. 작은따옴표나 큰따옴표를 직접 사용하든 관계없이 코드에 잠재적인 문제가 있습니다. 변수에 "/"가 포함되어 있으면 sed는 이를 "s" 명령의 일부로 처리합니다. 즉, 슬래시가 4개 있고 다음과 같은 구문 오류가 발생합니다.

sed: bla bla bla: unknown option to `s'   #good luck debugging that :)

이 문제를 해결하기 위해 나는 일반적으로 내 변수에 나타날 가능성이 가장 적은 다른 구문 구분 기호를 선택합니다. 예를 들어, 새 명령은 다음과 같습니다.

sed 's# '"$username"'##' file1.txt

관련 정보