폴더를 반복하면서 폴더에 있는 같은 이름의 파일을 열고 몇 가지 작업을 수행하고 있습니다.
나는 줄을 조작하기 위해 sed를 사용하고 있습니다.
sed "1s/Log R Ratio/$SAMPLE.LRR/" $FILE
여기서 $FILE은 이름에 공백이 2개 이상 있는 파일입니다. 예:
NAT062813_Batch A_1_TR27GD1_CytoScanHD_NL_092913/NAT062813_Batch A_1_TR27GD1_CytoScanHD_NL_092913.txt
이 파일과 함께 sed를 사용할 수 있는 방법이 있습니까(루핑이나 이름 변경 없이)? $FILE 주위에 따옴표를 넣으려고 했지만 그냥 인쇄됩니다.
답변1
귀하의 질문을 다시 읽으면 방금 놓친 것 같습니다 -i
. sed
이 옵션은 sed
결과를 표준 출력으로 인쇄하는 대신 파일을 편집합니다.
아주 좋은 생각이니 참고해주세요시험주문sed
앞으로-i
실수한 경우 "실행 취소" 명령이 없으므로 스위치를 사용하십시오 .
예를 들어, 실행하면 터미널에 sed 's/old/new/' myfile
이 내용이 인쇄되는 것을 볼 수 있으며 각 줄의 첫 번째 인스턴스는 로 대체됩니다. 실행하면 인쇄된 내용이 아무것도 표시되지 않습니다. 해당 위치에서 (되돌릴 수 없게) 편집됩니다.myfile
old
new
sed -i 's/old/new/' myfile
myfile
-i.bak
예를 들어 대신 을 사용할 수도 있습니다 -i
. 이렇게 하면 원본 파일은 로 저장되고 myfile.bak
편집된 파일은 로 표시됩니다 myfile
. (원하는 확장자를 정의할 수 있으며 .bak
점으로 시작할 필요는 없지만 .bak
이러한 목적으로 자주 사용됩니다.)
공백이 포함된 파일 이름 주위의 따옴표는 별도의 문제이며 대답은 간단합니다. 단어 분리 없이 변수 확장을 얻으려면 큰따옴표를 사용하십시오. 따라서 변수가 있는 경우 filenamevariable="My file name which contains spaces"
다음과 같이 참조해야 합니다.sed 's/old/new/' "$filenamevariable"
기타 추천 도서: