우리는 중 하나 사용할 수 있습니다 sed또는 awk완전히 문제를 해결합니다.
로 sed:
$ sed 's/^.\./0&/' file.txt
&대체 명령 ( s) 의 대체 부분에서 발생 하면 명령 의 패턴 부분과 일치하는 입력 행 부분으로 확장됩니다.
정규 표현식 ^.\.은 " 임의의 문자 ( )로 시작하는 모든 행과 리터럴 도트 ( ) 가 일치^.\. 함"을 의미 합니다.
줄이 1.02.2017 23:40:00인 경우 패턴이 일치 하며 줄의 시작 부분 1.으로 바뀝니다 01..
로 awk:
awk질문 의 부분 코드를 기반으로 ...
명시된 바와 같이, 각 입력 줄의 두 번째 문자를 인쇄합니다.
$ awk '{ print substr($0, 2, 1) }' file.txt
substr($0, 2, 1)두 번째 문자 를 반환 하는 사실을 사용하여 조건으로 사용할 수 있습니다.
$ awk 'substr($0, 2, 1) == "." { ... }' file.txt
무엇에 들어가는 것은 { ... }앞에 추가하는 것이 코드 $0제로와 현재 줄의 내용입니다, 위의 조건에 해당하는 경우 :
$ awk 'substr($0, 2, 1) == "." { $0 = "0" $0 }' file.txt
그런 다음 모든 줄을 인쇄해야합니다.
$ awk 'substr($0, 2, 1) == "." { $0 = "0" $0 } { print }' file.txt
조건 substr($0, 2, 1) == "."은 물론 정규 표현식으로 변경 될 수도 있습니다 ( sed솔루션 에서 사용한 것과 정확히 동일한 표현식을 사용 합니다).
$ awk '/^.\./ { $0 = "0" $0 } { print }' file.txt
"짧을수록 항상 좋다"고 생각하는 사람들은
$ awk '/^.\./ { $0 = "0" $0 } 1' file.txt
(아마도 대부분의 공백을 제거하십시오. awk '/^.\./{$0="0"$0}1' file.txt)