정규식을 사용하여 for 루프에서 Sed 사용

정규식을 사용하여 for 루프에서 Sed 사용

예제 이름 목록을 반복하고 sed를 사용하여 해당 예제 이름을 수정하기 위해 for 루프를 사용하여 json 파일을 수정하려고 합니다. 이제 입력 파일의 하위 집합은 다음과 같습니다.

      "WA82671",
        "WA8267-technical-replicate-1":"AGCGTTGAT+CACATGTCC",
        "WA8267-technical-replicate-2":"TCATGGTCAAT+TGCAGTGAGC"
    "WA82671":{ "/scratch/jjz86252/ipyrad/3RAD_processed/WA8267_R1_1.fq.gz",
                "/scratch/jjz86252/ipyrad/3RAD_processed/WA8267_R2_1.fq.gz"
        "name":"WA82671",

나는 희망한다;

      "WA8267",
        "WA8267-technical-replicate-1":"AGCGTTGAT+CACATGTCC",
        "WA8267-technical-replicate-2":"TCATGGTCAAT+TGCAGTGAGC"
    "WA8267":{"/scratch/jjz86252/ipyrad/3RAD_processed/WA8267_R1_1.fq.gz", 
              "/scratch/jjz86252/ipyrad/3RAD_processed/WA8267_R2_1.fq.gz"
        "name":"WA8267",

나는 $(cat Samplenames); do sed -er 's/$i\1/$i/g' names;에서 다음 명령을 시도했지만 이 명령은 변경에 실패했습니다. i의 모든 값에 대해 전체 파일을 인쇄합니다.

답변1

/슬래시가 포함된 파일 경로를 사용하고 있으므로 sed 표현식에 쉼표를 사용해야 합니다. 그것은 마치 ...

for name in $(cat samplenames); do
    sed -e "s,${name}1,${name},g" sample --in-place
done

관련 정보