문자열의 두 열을 연결합니다.

문자열의 두 열을 연결합니다.

두 개의 문자열 열을 연결하고 그 사이에 _를 삽입하려면 어떻게 해야 합니까?

파일이 있습니다:

L  o     45
OK kklkj 5

원하는 결과는 다음과 같습니다.

L_o      45
OK_kklkj 5

나는 시도했다:

awk '{printf "%12s %22.2f\n", $1+'_'+$2, $3}' file

문자열을 숫자로 변환합니다. 감사해요.

답변1

사용 sed:

sed 's/[[:blank:]]\{1,\}/_/' file

이는 하나 이상의 연속 공백(공백 또는 탭)이 처음 나타나는 것을 단일 밑줄 문자로 바꿉니다.

GNU를 사용하면 sed다음과 같이 단축할 수 있습니다.

gsed -E 's/\s+/_/' file

이는 지정된 데이터에 대해 위와 동일하지만 처음 두 필드 사이에 해당 문자가 있는 경우 더 큰 공백 유사 문자 세트와 일치합니다( \sPCRE 표기법은 유사하게 일치하며 [[:space:]]수직 탭 문자, 캐리지 리턴 문자도 포함). 캐리지 리턴 문자 및 폼 피드 문자).

질문의 데이터가 주어지면 다음과 같은 출력이 생성됩니다.

L_o     45
OK_kklkj 5

답변2

사용awk

$ awk '{$0=$1"_"$2FS$NF}1' input_file | column -t
L_o       45
OK_kklkj  5

답변3

이렇게 해야 합니다(원천):

awk '{$1=(NR==1?"ID":$1"_"$2); $2=""}1' file

필요한 경우 나중에 표준화할 수 있는 추가 공백이 있습니다.

관련 정보