2013-01-11 2 views
0

내가 선 "LOADS*"로 시작하고 라인의 마지막 caracter는 "*"하지 않고 또한 "*에 새 줄을 추가하면 위치 (72)에서"* "문자를 추가하려고 해요 "열 1.* 패턴을 대체

INPUT

LOAD* 720010013  1.5    1.0300   710010013 
LOAD* 730010013  1.5    1.0300   710010013  * 
*  10.73   1000001 
LOAD* 720010014  1.5    1.0300   710010014  * 
* 
LOAD* 730010014  1.5    1.0300   710010014  * 
*  10.73   1000001 
LOAD  10013  1.5    1.0300    10013 

OUTPUT

LOAD* 720010013  1.5    1.0300   710010013  * 
* 
LOAD* 730010013  1.5    1.0300   710010013  * 
*  10.73   1000001 
LOAD* 720010014  1.5    1.0300   710010014  * 
* 
LOAD* 730010014  1.5    1.0300   710010014  * 
*  10.73   1000001 
LOAD  10013  1.5    1.0300    10013 
에있는 문자
+0

작업을 표시하십시오. –

답변

1

한 가지 방법 :

awk '/^LOAD\*/{if (substr($0,73,1)!="*"){x=sprintf("%-72s%c",substr($0,0,72), "*"); $0=x "\n*";}}1' file 
0

이 (나오지 GNU)을 당신을 위해 일 수 있습니다

sed '/^LOAD\*.*[^*]$/!b;:a;/.\{72\}/!s/$/ /;ta;s/\(.\{72\}\).*/\1*\n*/' file 

N.B. 테스트 데이터를 사용하면 *이 73 번 열로 표시됩니다.

관련 문제