나는 (Google에서) 내 디렉터리와 하위 디렉터리에 있는 모든 파일을 대체하는 완벽하게 작동하는 다음 줄을 발견했습니다.
grep -lr previoustext | xargs sed -i 's/previoustext/newtext/g'
좋은 결과.
하지만 이제 내 파일 bash_aliases
의 함수에서 다음과 같이 사용하려고 합니다.
freplace() {
grep -lr previoustext | xargs sed -i 's/previoustext/newtext/g';
}
그런데 전화를 해보니
freplace previoustext newtext
내 터미널에서는 아무 일도 일어나지 않습니다. 텍스트가 대체되지 않습니다.
왜 작동하지 않는지 아시나요?
답변1
매개변수를 함수에 전달하려면 위치 매개변수를 사용하여 매개변수를 가져와야 합니다.
freplace() {
grep -lr "$1" | xargs sed -i "s/$1/$2/g"
}
/
sed 또는 기타 특수 문자가 포함된 문자열 에서는 작동하지 않습니다 .