나는 다음 줄을 가지고 있습니다 :
08:30:02.480507 IP 192.168.100.150.65119 > 192.168.100.151:53 59865 [1au] A? click.em.redbox.com. (48)
타임스탬프에서 ".480507"을 제거해야 하므로 줄은 다음과 같습니다.
08:30:02 IP 192.168.100.150.65119 > 192.168.100.151.53: 59865 [1au] A? click.em.redbox.com. (48)
나는 성공하지 못한 채 몇 가지 어색하고 잘린 진술을 더듬었습니다. awk oneliner를 찾고 싶지만 sed가 더 나은 솔루션일 수 있습니다. 이런 식으로 편집하는 것에 대해서는 잘 모르겠습니다.
참고: 이는 예입니다. 제거해야 하는 타임스탬프 부분은 타임스탬프가 다른 여러 행에 대해 이 작업을 수행해야 하는 것과 동일하지 않습니다.
답변1
가장 간단한 방법 awk
은 공백으로 구분된 첫 번째 필드에서 정규식 바꾸기를 수행하여 마침표부터 필드 끝까지 모든 것을 바꾸는 것입니다.
awk '{sub(/\..*/,"",$1)}1' somefile
답변2
나는 awk를 사용할 것이다
awk --posix '{ gsub(/\.[[:digit:]]{6}/, "", $1); print }' filename
첫 번째 필드(공백으로 구분)를 찾아 검색합니다. 다음은 6개의 숫자입니다.
답변3
GNU와 함께sed
sed -r 's/^([^.]+)\.[0-9]+ /\1 /' filename
^([^.]+)
시작 문자열을 첫 번째 점 문자까지 캡처\.[0-9]+
1개 이상의 숫자가 뒤에 오는 점 문자와 일치합니다.
예시와 같이 문자 수가 주어진다면,
sed -r 's/^(.{8}).{7} /\1 /' filename