Unix 파일에서 데이터 가져오기 및 바꾸기

Unix 파일에서 데이터 가져오기 및 바꾸기

한 줄의 데이터가 있는 파일이 있습니다.

DL2016-12-02 고급 PW5038 6-09-012016-09-30949569014 PW5018 07554800010001089200001 00100010892 00000010304MDIRECT 0000000000000000000 0 { HPS PW5018COCOAA007708200000010304DXQ7262016001                                                                                          

이 형식으로 데이터를 얻으려고 합니다.0000001030.4M 00000000000.0{

내가 사용하는 명령은cut -c 385-396,415-427 Filename|sed 's/./&./10'|sed 's/./& /13'|sed 's/./&./25'

이 작업을 수행하는 쉬운 방법을 알려주십시오. 임의의 줄 수로 파일을 완성하려면 이 작업을 수행해야 합니다.

나는 다음을 사용하여 데이터를 얻을 것이다

awk '{print substr($0,385,10)"."substr($0,395,2)" "substr($0,415,11)"."substr($0,426,2)}' 파일 이름

이제 나는 다른 것을 찾고 있습니다. 각각 0000001030.4M 00000000000.0{ M and {으로 바꾸고 싶습니다 -1 and 5. 이는 다음과 같아야 합니다 -0000001030.41 00000000000.05.

답변1

귀하의 예제 코드는 매우 구체적인 요구 사항을 충족하는 만큼 간단합니다. 세 가지 개별 sed명령을 하나로 결합할 수 있습니다 .

cut -c 385-396,415-427 Filename | sed 's/./&./10;s/./& /13;s/./&./25'

또는 하위 문자열을 지원하는 모든 언어/도구를 사용할 수 있습니다. 예를 들어, awk:

awk '{print substr($0,385,10)"."substr($0,395,2)" "substr($0,415,11)"."substr($0,426,2)}' Filename

~에서GNU Awk 사용자 가이드:

substr(string, start [, length ])는
시작 문자부터 시작하여 길이 문자 길이의 문자열 하위 문자열을 반환합니다.

관련 정보