파일 내용을 복사하여 중복 내용을 변경하는 방법을 제안할 수 있는 사람이 있는지 궁금합니다.
예를 들어 파일 사전 복사:
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
로 대체 한 다음 결과를 원래 내용에 추가 할 수 있습니다 ( ).file
REPLACEMENT
W
file
주어진
$ 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
.
원본 입력 파일 cat
ed를 사용하여 다음을 생성합니다.
$ 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