한 줄의 데이터가 있는 파일이 있습니다.
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 ])는
시작 문자부터 시작하여 길이 문자 길이의 문자열 하위 문자열을 반환합니다.