저는 vi
편집기를 사용하고 있는데 파일에 이와 같은 데이터가 있습니다.
05/08/2017,U,01,116326001
05/08/2017,U,01,116226001
05/08/2017,U,01,116726323
05/08/2017,U,01,116236001
날짜(첫 번째 열)를 바꾸고 싶습니다.
예 : 05/08/2017
.04/03/2017
미리 감사드립니다.
답변1
Vi(또는 Vim) 내부:
:%s#^05/08/2017#04/03/2017#
Esc삽입 모드를 종료하려면 먼저 를 눌러야 할 수도 있습니다 .
에서와 마찬가지로 sed
이 명령을 사용하여 를 바꿀 때 패턴 구분 기호로 모든 문자를 선택할 수 있습니다 s
. 여기서 제가 선택한 것은 입니다 #
.
. 때문에 패턴은 ^05/08/2017
줄의 시작 부분에서 일치합니다 ^
. 이렇게 하면 라인의 다른 곳과 실수로 일치하는 것을 방지할 수 있습니다.
일반적인 /
패턴 구분 기호를 사용하면 "기울어진 이쑤시개 증후군":
:%s/^05\/08\/2017/04\/03\/2017/
%
바꾸기 명령은 시작 부분에 "범위"( "첫 번째 줄부터 마지막 줄까지" %
와 동일 1,$
) 를 사용 하기 때문에 현재 Vi 버퍼의 모든 줄에서 실행됩니다 .
답변2
간단하게sed도구:
sed -i 's~^[0-9]*/[0-9]*~04/03~' file
-i
파일을 제자리에서 수정하는 옵션
처리된 내용 file
:
04/03/2017,U,01,116326001
04/03/2017,U,01,116226001
04/03/2017,U,01,116726323
04/03/2017,U,01,116236001
답변3
awk 옵션:
awk -F, '{ printf "%s","04/03/2017";for (i=2;i<=NF;i++) {printf ",%s",$i } }' filename
원하는 날짜를 인쇄한 다음 나머지 필드를 다음과 같이 구분하여 반복하여 인쇄합니다.