파일의 일부 단어를 바꾸는 스크립트를 작성 중입니다. 줄을 (파일 이름의 첫 번째 부분).fastq.gz로 변경하고 싶습니다.
나는 가지고있다
파일 입력용ls /pathway *.sam | sort | uniq
sed -i "s/VFC-00012-02.fastq.gz/${filename}.fastq.gz/g" $file 실행
완벽한
이 스크립트를 실행한 후 빈 섹션이 나타납니다.
내가 원함(파일명 B(B.extensions))
B.fastq.gz
본문에서
sed 명령 후
나는이 문제를 다음의 도움으로 해결했습니다. https://askubuntu.com/questions/1011839/how-do-i-use-file-names-in-a-sed-command
답변1
닫는 작은따옴표 뒤에는 공백이 필요합니다. 그렇지 않으면 쉘은 파일 이름을 대체의 일부로 해석합니다.
sed -i 's/VFC-00012-02.fastq.gz/$filename.fastq.gz/' "$file"
토큰화되지 않도록 변수 주위에 큰따옴표를 두는 것이 좋습니다.
반면에,아니요변수($filename)를 큰따옴표로 묶는 것은 변수가 전혀 확장되지 않음을 의미합니다. 즉, 파일에 리터럴 달러 기호가 포함됩니다. 이것이 당신이 원하는 것인지 잘 모르겠습니다.
$filename을 확장하기 위해 큰따옴표로 전환할 수 있지만 sed 특수 문자가 포함될 수 있는지 주의해야 합니다. sed가 인수를 보기 전에 쉘이 변수를 확장하므로 sed는 해당 문자가 원본에서 어디서 왔는지 알 수 없기 때문입니다. 변하기 쉬운.