파일 내용 복사 및 변경

파일 내용 복사 및 변경

파일 내용을 복사하여 중복 내용을 변경하는 방법을 제안할 수 있는 사람이 있는지 궁금합니다.

예를 들어 파일 사전 복사:

Nempar|EIJ87098.1  
Ecanceri|ORD93056.1

파일 게시물 중복:

Nempar|EIJ87098.1  
Ecanceri1|ORD93056.1  
Nempardup|EIJ87098.1  
Ecanceridup|ORD93056.1

특정 위치나 특정 캐릭터를 변경할 필요가 없습니다. 중복된 항목을 표시하는 것뿐입니다.

현재 나는 다음을 사용합니다.

cat file.txt file.txt > file.dup.txt

여기에 추가할 수 있는 방법이 있나요? 아니면 고양이가 너무 단순합니까?

답변1

이 시도,

(cat file.txt && awk -F '|' '{print $1"dup|"$2}' file.txt) > file.dup.txt


cat file.dup.txt 

Nempar|EIJ87098.1
Ecanceri|ORD93056.1
Nempardup|EIJ87098.1
Ecanceridup|ORD93056.1

아니면 sed를 사용하세요:

(cat file.txt && sed 's/|/dup|/g' file.txt) > file.dup.txt

답변2

주어진 내용을 ed(전역) 교체 PATTERN로 대체 한 다음 결과를 원래 내용에 추가 할 수 있습니다 ( ).fileREPLACEMENTWfile

주어진

$ cat file
Nempar|EIJ87098.1
Ecanceri|ORD93056.1

그 다음에

$ ed -s file << 'EOF'
,s/|/dup|/
Wq
EOF

결과

$ cat file
Nempar|EIJ87098.1
Ecanceri|ORD93056.1
Nempardup|EIJ87098.1
Ecanceridup|ORD93056.1

답변3

절차 대체를 사용하고sed

입력 파일을 수정하고 dup첫 번째 열에 추가한다고 상상해 보세요.

$ sed 's/|/dup|/' file.txt
Nempardup|EIJ87098.1
Ecanceridup|ORD93056.1

이는 각 줄의 |첫 번째 항목을 대체합니다.dup|

cat다음과 같은 프로세스 대체 형식을 사용하여 이 파일을 수정할 수 있습니다 cat <(command).

$ cat <(sed 's/|/dup|/' file.txt)
Nempardup|EIJ87098.1
Ecanceridup|ORD93056.1

분명히 이것은 첫 번째 명령과 동일한 출력을 생성합니다 sed.

원본 입력 파일 cated를 사용하여 다음을 생성합니다.

$ cat file.txt <(sed 's/|/dup|/' file.txt)
Nempar|EIJ87098.1
Ecanceri|ORD93056.1
Nempardup|EIJ87098.1
Ecanceridup|ORD93056.1

평소와 같이 출력을 다른 파일로 리디렉션할 수 있습니다.

$ cat file.txt <(sed 's/|/dup|/' file.txt) > file.dup.txt

관련 정보