저는 awk 또는 sed 솔루션을 찾고 있습니다. 저는 천재도 아닙니다. 나는 이 글을 쓰기 시작했을 때 나온 모든 제안을 읽었습니다.
데이터 행이 포함된 파일이 있습니다.
name
thisdate=Sep 2 23:59:59 2022 GMT
name
thisdate=Sep 15 23:59:59 2022 GMT
이름과 날짜/시간이 모두 다릅니다. 날짜 번호는 항상 같은 위치에 있고 항상 같은 문자 수를 차지합니다(2). 시/분/초는 항상 줄 위의 같은 위치에 있습니다. 모든 줄이 thisdate
항상 미래의 날짜인 것은 아니며 빈 줄도 없습니다.
닫으려고 시도하여 이 날짜 행에서 시간을 제거하려고 합니다 thisdate=
(선행 공백 thisdate
). 그런 다음 위치 18-26의 문자를 제거합니다(올바르게 계산된 경우).
나는 몇 가지를 시도했지만 주로 올바른 방향을 제시하기 위해 내 필요에 맞는 것을 찾고 있습니다.
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