부제의 정보를 사용하여 새 열을 추가합니다.

부제의 정보를 사용하여 새 열을 추가합니다.

sed를 사용하여 패턴이 포함된 줄 바꾸기

@don_crissti와 @Archemar에게 감사드립니다. 내 질문은 위의 질문과 중복되지 않는 것 같습니다.

다음은 입력 예입니다.편집하다:모든 부품에는 가치가 있습니다. 나는 자막에 또 다른 복잡한 내용을 추가했습니다.

DATA1

NAME: A (X)
12,1
13,2
14,4

NAME: B (X)
21,2
22,3

NAME: C (X)
24,4

원하는 출력은 다음과 유사해야 합니다.

DATA1

A    12,1
A    13,2
A    14,4

B    21,2
B    22,3

C    24,4

답변1

출력 구분 기호는 공백 4개이므로 이 예제에서는 이를 사용합니다. 필요한 대로 변경하십시오(예: TAB).OFS="\t"

awk 'NR==1 || NF==0 {print; next}  # main heading and blank lines 
     $1=="NAME:" {name=$2; next}   # section name/header
     {print name, $1}              # data lines
    ' OFS="    " file

산출:

DATA1

A    12,1
A    13,2
A    14,4

B    21,2
B    22,3

C    24,4

답변2

이것은 sed입니다. 나는 그것을 추천하지 않는다

sed -n '
    1 {p; n}
    /^[[:blank:]]*$/ {p; n}
    /^NAME: \+/ {s///; h; n}
    {H; g; s/\n/ /; p; s/ .*//; h}
' file

sed에 예약된 공간이라는 변수가 하나만 있다는 점을 제외하면 Peter의 awk 명령과 동일한 작업을 수행합니다.

관련 정보