sed/awk 일치 후 특정 위치의 문자 제거

sed/awk 일치 후 특정 위치의 문자 제거

저는 awk 또는 sed 솔루션을 찾고 있는데 둘 다 천재는 아닙니다. 나는 이 글을 쓰기 시작할 때 나온 제안을 모두 읽었습니다.

데이터 줄이 포함된 파일이 있습니다.

name
 thisdate=Sep  2 23:59:59 2022 GMT
name
 thisdate=Sep 15 23:59:59 2022 GMT

이름과 날짜/시간은 모두 다르며, 요일 숫자는 항상 같은 위치에 있고 항상 같은 수의 문자를 차지합니다(2). 시간/분/초는 모두 줄에서 항상 같은 위치에 있습니다. 모든 줄이 아니고 thisdate항상 미래의 날짜이며 빈 줄이 없습니다.

 thisdate=키를 끄고 (앞의 공백 ) 18-26 위치의 문자를 삭제 하여 해당 날짜 줄에서 시간을 제거하려고합니다 thisdate(올바르게 계산한 경우)

나는 몇 가지를 시도했지만 대부분 올바른 방향을 가리킬 수 있도록 내 필요에 맞는 것을 찾고 있었습니다.

  952  sed 's/^\(.\{18\}\)\(.\{26\}\)/\1/' file  <--this may not have worked as I didn't key on a match?
  958  sed -i 's/thisdate=(.{11})18/\26/' file
  959  sed -i 's/thisdate=(.{10})17/\25/' file

나는 뭔가를 놓치고 있다고 확신하지만 누군가가 나를 올바른 방향으로 가리킬 수 있다면 감사하겠습니다!

답변1

다음의 6번째 문자 이후 9자를 삭제하는 것만으로도 충분할 것 같습니다  thisdate=.

sed 's/^\( thisdate=.\{6\}\).\{9\}/\1/' file

주어진 데이터에 대해 다음이 생성됩니다.

name
 thisdate=Sep  2 2022 GMT
name
 thisdate=Sep 15 2022 GMT

관련 정보