행을 두 개의 열로 변환

행을 두 개의 열로 변환

입력하다:

IN22FDX_S1P_WWWWBBBBMMMCCCC_ffg_pre_0.59_0_.72_-40_nominal

산출:

IN22FDX_S1P_WWWWBBBBMMMCCCC ffg_pre_0.59_0_.72_-40_nominal
#                          ^
#                space instead of underscore

위의 행을 두 개의 열로 변환하려면 어떻게 해야 합니까(둘 사이의 밑줄 제거)? 첫 번째 단어의 길이는 고정되어 있습니다 IN22FDX_S1P_WWWWBBBBMMMCCCC.

답변1

첫 번째 열의 크기가 고정된 경우

sed 's/./ /28'

28번째 문자를 공백으로 바꿉니다.

데이터가 파일에 저장되어 있다고 가정하면 sed를 사용하여 해당 위치에서 편집할 수 있습니다.

sed -i.bak 's/./ /28' input_file

.bak내가 추가한 옵션에 주목하세요 -i. 이는 sed에게 input_file.bak제공된 접미사를 사용하여 백업 파일을 생성하도록 지시합니다. 접미사는 선택 사항입니다.

답변2

암소 비슷한 일종의 영양cut해결책:

s="IN22FDX_S1P_WWWWBBBBMMMCCCC_ffg_pre_0.59_0_.72_-40_nominal"
cut -c 1-27,29- --output-delimiter=' ' <<<"$s"
  • -c- 캐릭터 선택

산출:

IN22FDX_S1P_WWWWBBBBMMMCCCC ffg_pre_0.59_0_.72_-40_nominal

관련 정보