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