![ssh를 사용하여 원격 시스템에서 sed를 사용하여 문자열을 줄 번호로 바꾸는 방법은 무엇입니까?](https://linux55.com/image/110266/ssh%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%9B%90%EA%B2%A9%20%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%97%90%EC%84%9C%20sed%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%EC%A4%84%20%EB%B2%88%ED%98%B8%EB%A1%9C%20%EB%B0%94%EA%BE%B8%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
원격 컴퓨터에 있는 파일의 문자열을 바꾸려고 합니다. 먼저 grep 명령을 사용하여 줄 번호를 가져온 다음 해당 줄의 문자열을 해당 줄 번호로 바꿔야 했습니다.
내 코드는 다음과 같습니다. 내 스크립트 파일스크립트 파일.
# path of script.sh on remote machine
file_path="/home/user/script.sh"
#file-[0-9]\.[0-9]\.[0-9]\.txt using for file-1.0.5.txt
sshpass -p 'pswd' ssh user@remote-01 "bash -s" <<EOF
n=$(grep -wn "/tmp/xyz/file-[0-9]\.[0-9]\.[0-9]\.txt\" $file_path | cut -d : -f 1)
sed -i '{$n}s/old_string/new_string/}' $file_path;
EOF
EOF 블록의 명령은 내 호스트에서 실행되지만 ssh를 사용할 때 원격 시스템에서는 작동하지 않습니다. 누구든지 나를 도와줄 수 있나요? 티아.
답변1
file_path="/home/user/script.sh"
sshpass -p 'pswd' ssh user@remote-01 "bash -s" <<EOF
sed -i -e '\|/tmp/xyz/file-[0-9]\.[0-9]\.[0-9]\.txt|s/old_string/new_string/' "$file_path"
EOF
설명하다
- 파일이 원격 m/c에 표시된다고 가정하면 명령을 실행해야 하는 줄 번호를
/home/user/script.sh
먼저 찾을 필요가 없습니다 . 또한 구성하려는 서브우퍼를 선택할 수 있는 라인 번호s///
도 알아야 합니다 .sed
/regex/s///