열의 일부를 선택하고 새 열로 붙여넣기

열의 일부를 선택하고 새 열로 붙여넣기

다음 형식의 파일이 있습니다.

# Comment 
# Comment 
# Comment
@ Title
@ Label 
@ Label
1       2
2       5
3       7
&
1       7
2       4
3       9
&

따라서 첫 번째 열은 반복되고 두 번째 열은 변경됩니다. 첫 번째 열에서는 "&"로 구분되고 두 번째 열에서는 공백으로 구분됩니다. 그러한 섹션이 수천 개 있을 수 있습니다. 두 번째 열의 일부를 잘라서 새 열로 붙여넣고 싶습니다. 따라서 이 경우에는 다음과 같습니다.

# Comment 
# Comment 
# Comment
@ Title
@ Label 
@ Label
1     2     7
2     5     4
3     7     9

그러면 모든 열을 더 쉽게 차트로 작성할 수 있습니다. 첫 번째 행도 신경 쓰지 않습니다. 삭제하거나 그대로 두는 것이 더 쉬울 경우에는 중요하지 않습니다.

답변1

달리다:

cat << EOF | awk '
$1 == "#" || $1 == "@" { print; next }
$1 != "&" { result[$1] = (result[$1] ? result[$1] : $1) "\t" $2 }
END { for (i in result) print result[i] }
'
# Comment 
# Comment 
# Comment
@ Title
@ Label 
@ Label
1       2
2       5
3       7
&
1       7
2       4
3       9
&
EOF

아니면 이 파일을 사용해도 됩니다파일 이름입력 데이터로. 이 경우 다음을 실행합니다.

awk '
$1 == "#" || $1 == "@" { print; next }
$1 != "&" { result[$1] = (result[$1] ? result[$1] : $1) "\t" $2 }
END { for (i in result) print result[i] }
' filename

두 경우 모두 다음과 같은 결과를 얻게 됩니다.

# Comment 
# Comment 
# Comment
@ Title
@ Label 
@ Label
1   2   7
2   5   4
3   7   9

여러 열에 대해 작동합니다.

관련 정보