텍스트 파일의 날짜를 현재 날짜로 업데이트

텍스트 파일의 날짜를 현재 날짜로 업데이트

날짜가 여러 번 포함된 텍스트 파일이 있습니다. 모든 날짜는 형식으로 작성됩니다 Mon-DD-YYYY. 현재 날짜의 모든 날짜를 업데이트하고 형식을 유지해야 합니다 Mon-DD-YYYY.

스크립팅 언어는 , , 내장 함수 등과 특정 날짜 형식을 일치시키는 bash방법을 모른다는 것이 큰 문제입니다.sedawkbash

저 좀 도와 주 시겠어요?

답변1

current_date=$(date +"%m-%d-%Y")원하는 날짜를 설정 하고 실행하세요.

sed -i.bak "s/[0-9]\{2\}-[0-9]\{2\}-[0-9]\{4\}/$current_date/g" your_file.txt

이렇게 하면 파일의 모든 날짜를 일치시키고 현재_날짜로 바꿀 수 있습니다.

sed이 경우 명령은 다음과 같이 작동합니다 sed "s/tobereplace/replacement/g". 마지막은 g전역을 나타냅니다. 즉, tobeplace 패턴이 발생할 때마다 교체로 대체된다는 의미입니다.

정규식 패턴을 대체하는 데 사용됩니다.[0-9]\{2\}-[0-9]\{2\}-[0-9]\{4\}사용된다는 뜻이다.

  • [0-9]0에서 9 사이의 임의의 숫자
  • \{2\}두 배
  • 하이픈
  • 또 똑같아, 또 똑같아, 하지만 네 번이나\{4\}

편집하다: FelixJN이 의견에서 언급했듯이 날짜 명령에서 %b를 사용하고 정규식의 첫 번째 부분을 다음과 같이 바꿀 수 있으므로 월을 문자열로 원할 것입니다.

current_date=$(date "+%b-%d-%Y")
sed -Ei "s/[A-Z][a-z]\{2\}-[0-9]\{2\}-[0-9]\{4\}/$current_date/g" your_file.txt

이 경우 정규식은 다음과 같이 작동합니다.

  • [A-Z] A부터 Z까지의 모든 대문자와 일치합니다.
  • [a-z]\{2\}a부터 z까지의 모든 소문자를 두 번 일치시킵니다.

나머지는 위에서 언급한 것과 동일

답변2

사용행복하다(이전 Perl_6)

숫자(2자리) 월로 시작하는 경우:

~$ raku -pe 's:g/ \d**2 \- \d**2 \- \d**4 /{Date.today.mm-dd-yyyy("-")}/;'  file

알파벳(3자) 월로 시작하는 경우:

~$ raku -pe 'BEGIN my %h = [Z=>] 1..12, <Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec>;   \
             s:g/ <{%h.values}> \- \d**2 \- \d**4  /{ join "-", %h{Date.today.month}, Date.today.day, Date.today.year }/;'  file

입력 예:

Delaware  Dec-07-1787;      Pennsylvania  Dec-12-1787;      New Jersey  Dec-18-1787;        Georgia  Jan-02-1788;
Connecticut  Jan-09-1788;       Massachusetts  Feb-06-1788;     Maryland  Apr-28-1788;      South Carolina  May-23-1788;
New Hampshire  Jun-21-1788;     Virginia  Jun-25-1788;      New York  Jul-26-1788;      North Carolina  Nov-21-1789;
Rhode Island  May-29-1790;      Vermont  Mar-04-1791;       Kentucky  Jun-01-1792;      Tennessee  Jun-01-1796;
Ohio  Mar-01-1803;      Louisiana  Apr-30-1812;     Indiana  Dec-11-1816;       Mississippi  Dec-10-1817;
Illinois  Dec-03-1818;      Alabama  Dec-14-1819;       Maine  Mar-15-1820;     Missouri  Aug-10-1821;
Arkansas  Jun-15-1836;      Michigan  Jan-26-1837;      Florida  Mar-03-1845;       Texas  Dec-29-1845;
Iowa  Dec-28-1846;      Wisconsin  May-29-1848;     California  Sep-09-1850;        Minnesota  May-11-1858;
Oregon  Feb-14-1859;        Kansas  Jan-29-1861;        West Virginia  Jun-20-1863;     Nevada  Oct-31-1864;
Nebraska  Mar-01-1867;      Colorado  Aug-01-1876;      North Dakota  Nov-02-1889;      South Dakota  Nov-02-1889;
Montana  Nov-08-1889;       Washington  Nov-11-1889;        Idaho  Jul-03-1890;     Wyoming  Jul-10-1890;
Utah  Jan-04-1896;      Oklahoma  Nov-16-1907;      New Mexico  Jan-06-1912;        Arizona  Feb-14-1912;
Alaska  Jan-03-1959;        Hawaii  Aug-21-1959;        

예제 출력:

Delaware  Jul-4-2023;       Pennsylvania  Jul-4-2023;       New Jersey  Jul-4-2023;     Georgia  Jul-4-2023;
Connecticut  Jul-4-2023;        Massachusetts  Jul-4-2023;      Maryland  Jul-4-2023;       South Carolina  Jul-4-2023;
New Hampshire  Jul-4-2023;      Virginia  Jul-4-2023;       New York  Jul-4-2023;       North Carolina  Jul-4-2023;
Rhode Island  Jul-4-2023;       Vermont  Jul-4-2023;        Kentucky  Jul-4-2023;       Tennessee  Jul-4-2023;
Ohio  Jul-4-2023;       Louisiana  Jul-4-2023;      Indiana  Jul-4-2023;        Mississippi  Jul-4-2023;
Illinois  Jul-4-2023;       Alabama  Jul-4-2023;        Maine  Jul-4-2023;      Missouri  Jul-4-2023;
Arkansas  Jul-4-2023;       Michigan  Jul-4-2023;       Florida  Jul-4-2023;        Texas  Jul-4-2023;
Iowa  Jul-4-2023;       Wisconsin  Jul-4-2023;      California  Jul-4-2023;     Minnesota  Jul-4-2023;
Oregon  Jul-4-2023;     Kansas  Jul-4-2023;     West Virginia  Jul-4-2023;      Nevada  Jul-4-2023;
Nebraska  Jul-4-2023;       Colorado  Jul-4-2023;       North Dakota  Jul-4-2023;       South Dakota  Jul-4-2023;
Montana  Jul-4-2023;        Washington  Jul-4-2023;     Idaho  Jul-4-2023;      Wyoming  Jul-4-2023;
Utah  Jul-4-2023;       Oklahoma  Jul-4-2023;       New Mexico  Jul-4-2023;     Arizona  Jul-4-2023;
Alaska  Jul-4-2023;     Hawaii  Jul-4-2023;     

교체 부품은 {...}중괄호로 묶인 코드 블록의 raku 코드를 사용하여 교체 날짜를 생성합니다. 참고: 식별 필드에서 위의 코드(두 번째 답변)는 <{%h.values}>월을 생성하는 데 사용됩니다. <alpha>**3또는 @GlennJackman의 월 목록(댓글)을 사용할 수도 있습니다 .


Shipley, Samuel. “국가의 연합 가입 날짜 목록.” 브리태니커 백과사전, 2020년 2월 11일,https://www.britannica.com/topic/list-of-US-states-by-date-of-admission-to-the-Union-2130026. 액세스 날짜: 2023년 7월 4일.

https://docs.raku.org/type/Date
https://docs.raku.org/routine/mm-dd-yyyy
https://raku.org

관련 정보