입력하다:
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