나는 폴더를 반복하고, 같은 이름의 폴더 내에서 파일을 열고, 약간의 조작을하고 있습니다.
sed를 사용하여 줄을 조작하고 있습니다.
sed "1s/Log R Ratio/$SAMPLE.LRR/" $FILE
여기서 $ FILE은 이름에 1 개 이상의 공백이있는 파일입니다. 예:
NAT062813_Batch A_1_TR27GD1_CytoScanHD_NL_092913/NAT062813_Batch A_1_TR27GD1_CytoScanHD_NL_092913.txt
이 파일들에 sed를 사용할 수있는 방법이 있습니까 (이름을 바꾸지 않고)? $ FILE 주위에 따옴표를 넣으려고했지만 방금 인쇄했습니다.
귀하의 질문을 다시 읽으면에 대한 -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"
기타 추천 자료 :
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다