나는 bash 스크립트를 작성 중이며 일부 파일을 파일로 저장 .bak
하고 처음에 해당 내용을 변경해야 합니다( sed
이 목적을 위해).
내 bash 스크립트에 대해 이것을 작성하는 더 좋은 방법을 찾고 있습니다.
cp file.txt file.txt.bak | sed -i '1i#Backup file' file.txt.bak
어쩌면 누군가가 이 작업을 수행하는 더 효율적인 방법을 알고 있거나 sed를 사용하거나 파이프를 사용하지 않고 수행하는 방법을 알고 있을 수도 있습니다.
답변1
파이프는 거기에서 전혀 아무것도 하지 않습니다. cp
출력이 없으므로 출력을 다른 프로그램으로 파이프할 수 없습니다. 나는 당신이 원 ;
하거나 &&
그 반대라고 생각합니다.
## copy the file and then run sed
cp file.txt file.txt.bak; sed -i '1i#Backup file' file.txt.bak
또는
## copy the file and then run sed BUT only if the copy was successfull
cp file.txt file.txt.bak && sed -i '1i#Backup file' file.txt.bak
그러나 원하는 것이 첫 번째 줄이 변경된 원본 파일의 복사본이라면 sed가 실제로 이를 수행할 수 있습니다.
sed '1i#Backup file' file.txt > file.txt.bak