다른 파일의 특정 열 복사

다른 파일의 특정 열 복사

이미 존재하는 두 열 사이에 파일 file1 (.txt)의 두 번째 열을 복사하고 싶습니다..csv(file2)

전임자. 파일 1(.txt)

aaaaa   AA
bbbbb   A
ccccc   AB

파일 2(.csv)

vnght   234    ghy
thryu   567    guuu
ghru    456    guuu

출력(.csv)

vnght   234    AA    ghy
thryu   567    A     guuu
ghru    456    AB    guuu

어떻게 해야 하나요?


여기에 이미지 설명을 입력하세요.

파일 1, 컬럼 2를 복사하고 싶어요..

여기에 이미지 설명을 입력하세요.

이것은 file1이고 복사하려는 열은 두 번째 열입니다.

여기에 이미지 설명을 입력하세요.r.com/XZaxL.png

3열과 4열 사이의 열을 복사하려는 파일입니다.

여기에 이미지 설명을 입력하세요. 이해가 안 가네요. 결과가 그렇네요.

답변1

그리고 paste그리고cut

paste -d, <(cut -d',' -f 1,2 file2.csv) \
          <(cut -d$'\t' -f2 file1.txt) \
          <(cut -d',' -f 3 file2.csv)

시험

$ cat file1.txt
aaaaa   AA
bbbbb   A
ccccc   AB

$ cat file2.csv
vnght,234,ghy
thryu,567,guuu
ghru,456,guuu

$ paste -d, <(cut -d',' -f 1,2 file2.csv) \
            <(cut -d$'\t' -f2 file1.txt) \
            <(cut -d',' -f 3 file2.csv)
vnght,234,AA,ghy
thryu,567,A,guuu
ghru,456,AB,guuu

file2.csv의 오른쪽에 더 많은 추가 열이 있고 목표가 이러한 열을 유지하는 것이라면 스크립트를 다음과 같이 조정해야 합니다.

$ paste -d, <(cut -d',' -f1,2 file2.csv) \
            <(cut -d$'\t' -f2 file1.txt) \
            <(cut -d',' -f3- file2.csv)
vnght,234,AA,ghy
thryu,567,A,guuu
ghru,456,AB,guuu

답변2

file1과 file2가 귀하의 비밀번호에 있다고 가정하면 아마도 가장 우아하지는 않을 것입니다 ...

#!/bin/bash
i=1
while read -r line
do
  FIELD2=$(echo "$line" | awk '{print $2}')
  LINEFROMFILE2=$(sed "${i}q;d" ./file2)
  echo "$LINEFROMFILE2" | awk -v field="$FIELD2" '{$3=$3" "field} {print $0}'
  ((i++))
done < file1

답변3

그리고 :pasteawk

paste <(awk '{print $1"\t"$2}' file2)\
      <(awk '{print $2}' file1)\
      <(awk '{print $3}' file2)\
      > output

관련 정보