awk 또는 sed를 사용하여 열에 문자를 추가하시겠습니까?

awk 또는 sed를 사용하여 열에 문자를 추가하시겠습니까?

다음과 같은 파일이 있습니다.

A3 124.406526 8.281803
A3' 125.000684 8.389677
K4 123.072842 8.166373
K4' 120.092553 8.269080

첫 번째 열에 문자를 추가하고 싶습니다. 파일은 다음과 같아야 합니다.

A3N-H 124.406526 8.281803
A3'N-H 125.000684 8.389677
K4N-H 123.072842 8.166373
K4'N-H 120.092553 8.269080

awk나 sed를 통해 간단한 방법으로 이 작업을 어떻게 수행할 수 있나요?

답변1

그리고 sed:

sed -E 's/^([^[:blank:]]+)/\1N-H/' file.txt
  • ([^[:blank:]]+)첫 번째 필드( ^)와 일치하고 캡처된 그룹에만 넣습니다.

  • 교체 시 N-H첫 번째 필드에 추가하고,\1N-H

그리고 awk:

awk '{sub("$", "N-H", $1)}; 1' file.txt 
  • sub("$", "N-H", $1)첫 번째 필드( )의 끝을 $로 바꾸십시오 N-H. 이는 반드시 내부 추가 작업을 의미합니다.

  • 1true(수정된) 레코드를 인쇄할 수 있는 자리 표시자

예:

% cat file.txt                               
A3 124.406526 8.281803
A3' 125.000684 8.389677
K4 123.072842 8.166373
K4' 120.092553 8.269080

% sed -E 's/^([^[:blank:]]+)/\1N-H/' file.txt
A3N-H 124.406526 8.281803
A3'N-H 125.000684 8.389677
K4N-H 123.072842 8.166373
K4'N-H 120.092553 8.269080

% awk '{sub("$", "N-H", $1)}; 1' file.txt    
A3N-H 124.406526 8.281803
A3'N-H 125.000684 8.389677
K4N-H 123.072842 8.166373
K4'N-H 120.092553 8.269080

답변2

한 문장으로 요약하면 다음과 같습니다.

awk '$1=$1"N-H"'

관련 정보