우리는 중 하나 사용할 수 있습니다 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
)