구분된 파일의 필드에서 날짜 값 바꾸기

구분된 파일의 필드에서 날짜 값 바꾸기

ph.lst다음 레코드가 포함된 파일( )이 있습니다 . 다음 숫자를 제거해야 합니다 .txt. 숫자는 무작위로 생성되므로 항상 동일할 것이라고 기대할 수는 없습니다.

test_wkly_20200428010453_PD.txt.1589553864|test_wky|05-01-2020 16:07:53|35858

삭제하고 싶습니다 .1589553864. 내 출력은 다음과 같아야 합니다.

test_wkly_20200428010453_PD.txt|test_wky|05-01-2020 16:07:53|35858

나는 열심히 노력했다 sed -i 's/\.[0-9]$*//' ph.lst

도와주세요

답변1

다음 sed명령을 시도해 보세요.

sed -i 's/txt\.[0-9]*/txt/' ph.lst

다음 숫자 중 원하는 수를 txt.로 바꿉니다 txt.

답변2

당신은 명령을 시도했다고 말했습니다.

sed -i 's/\.[0-9]$*//' ph.lst

딱 하나만매우 작은뭔가 잘못되었다. 줄의 끝 부분과 일치 $하지만 그 지점에서 일치시키려는 것은 아닙니다. 대신에

sed 's/\.[0-9]*//' ph.lst

또는,

sed 's/\.[[:digit:]]*//' ph.lst

이렇게 하면 각 입력 줄의 첫 번째 점(및 점) 바로 뒤에 나타나는 모든 숫자가 제거됩니다. 출력은 표준 출력에 기록되므로 새 파일로 리디렉션할 수 있습니다.

그걸로 awk당신도 같은 일을 하게 될 거예요

awk -F '|' 'BEGIN { OFS=FS } { sub("\.[[:digit:]]*", "", $1) }; 1' ph.lst

ph.lst이렇게 하면 구분된 필드의 행을 구문 분석 |하고 with와 동일한 정규식을 사용하여 하위 문자열을 제거합니다 sed(여기서는 첫 번째 필드에서만 작동함).

관련 정보