
나는 이것을 가지고있다:
2018:01:02-23:52:48
2018:01:02-23:52:48
2018:01:02-23:52:48
2018:01:03-09:26:20
2018:01:03-09:26:20
하루에 메시지 수를 기준으로 정렬하기 위해 날짜는 유지하고 시간은 유지하고 싶습니다.
2018:01:02
2018:01:02
2018:01:02
2018:01:03
2018:01:03
가능하다면 이렇게 하고 싶습니다 awk
.
답변1
앗
awk -F- '$0=$1' file
자르다
cut -d- -f1 file
sed
sed 's/-.*//' file
진주
perl -pe 's/-.*//' file
답변2
간단하게awk
:
awk -F'-' '{ print $1 }' file
-F'-'
--
(대시)를 필드 구분자로 처리합니다.
그러나 간단한 경우 grep
접근 방식이 더 간단합니다.
grep -o '^[^-]*' file
답변3
당신이 입력하면오직타임스탬프를 포함하면 대시를 필드 구분 기호로 설정하고 첫 번째 필드만 인쇄하는 것이 쉽습니다.
$ awk -F- '{print $1}' input
2018:01:02
2018:01:02
input2
하지만 그 안에 다른 내용이 들어 있는 경우
2018:01:02-23:52:48 some data
2018:01:02-23:52:48 something else
그러면 행의 나머지 부분이 제거되고 다른 처리를 위해 필드 구분 기호도 변경하고 싶지 않을 것입니다. 그러나 첫 번째 필드를 간단히 바꾸고 결과 행을 인쇄할 수 있습니다.
$ awk '{sub(/-.*/, "", $1)} 1' input2
2018:01:02 some data
2018:01:02 something else
답변4
아래의 awk 하위 문자열 방법을 통해 동일한 효과를 얻었습니다.
awk '{print substr($1,1,10)}' filename
산출
2018:01:02
2018:01:02
2018:01:02
2018:01:03
2018:01:03