텍스트를 교체해야 합니다파일 2.txt도착하다파일 1.txt5위와 8위 사이. 5번째에서 8번째 위치 사이의 문자여야 합니다. 언급된 위치의 새 문자로 바꾸면 되고 나머지 위치의 문자는 이전과 동일해야 합니다.
파일 1.txt:
abcd9876efghijklmno
abcd9676efghijklmno
abcd9886efghijklmno
abcd9976efghijklmno
파일 2.txt:
1234
4321
6543
5678
예상 출력:
abcd1234efghijklmno
abcd4321efghijklmno
abcd6543efghijklmno
abcd5678efghijklmno
내가 시도한 명령
sed '/substr($0,5,4)/r File2.txt' File1.txt >file_new.txt
답변1
조합을 사용하는 것이 더 쉬울 수도 있습니다.paste+cut
$ paste -d'\0' <(cut -c1-4 File1.txt) File2.txt <(cut -c9- File1.txt)
abcd1234efghijklmno
abcd4321efghijklmno
abcd6543efghijklmno
abcd5678efghijklmno
-d'\0'
결합된 입력이 사이에 문자 없이 입력될 수 있도록- 당신은 또한 볼 수 있습니다구분 기호 없이 파일 붙여넣기
<()
예프로세스 교체cut -c1-4
각 줄의 처음 4개 문자를 제공합니다.cut -c9-
위치 9에서 시작하는 각 줄의 모든 문자를 제공합니다.
또 다른 접근 방식은 다음을 사용하는 관용적인 두 파일 처리입니다.awk
$ awk 'NR==FNR{a[FNR]=$0; next} {print substr($0,1,4) a[FNR] substr($0,9)}' File2.txt File1.txt
abcd1234efghijklmno
abcd4321efghijklmno
abcd6543efghijklmno
abcd5678efghijklmno
NR==FNR{a[FNR]=$0; next}
행 번호로 키가 지정된File2.txt
배열에 모든 행을 저장합니다.a
print substr($0,1,4) a[FNR] substr($0,9)
필요한 문자를 추출하고 중간에substr
줄을 삽입하는데 사용됩니다.File2.txt
답변2
조금 이상해 보일 수도 있지만 다음과 같습니다.
dd if=file1 bs=1 count=4 > file3
dd if=file2 bs=1 count=4 >> file3
dd if=file1 bs=1 skip=8 >> file3
file2에 줄 바꿈을 복사하는 것에 대해 언급하지 않았으며 전혀 필요하지 않은 것 같습니다.