저는 이 명령을 처음 접했고 지금까지 몇 가지를 시도했지만 매번 실패했습니다.
다음과 같은 텍스트 파일(MWE)이 있습니다.
26 6 2020 09:06:23.300 277.430 50.131 20654.698008
26 6 2020 09:05:23.322 277.153 50.000 20493.667799
이 텍스트 파일로 무엇을 하고 싶나요? 설명하겠습니다!
- 먼저 파일을 다시 정렬하고 싶습니다.일/월/년/시/분/초체재. 하지만 날짜와 관련된 다른 모든 데이터는 날짜에 따라 다시 정렬되어야 합니다. 명령을 통해 이를 달성할 수 있습니까
awk
? - 둘째, 다음과 같은 출력을 보기 위해 텍스트 파일을 정렬하고 싶습니다(기본적으로 ";" 문자로 빈 줄을 변경하고 싶습니다).
26;6;2020;09;05;23;277.153;50.000;20493.667799
26;6;2020;09;06;23;277.430;50.131;20654.698008
위에서도 시간 구분 기호가 ":"에서 ";"로 변경된 것을 볼 수 있습니다.. 타이밍직접 삭제하세요. 이제 MS Excel을 통해 즉시 삭제하겠습니다(복사+붙여넣기 및 편집만 하면 됩니다). 더 짧은 방법이 있다면 배우고 싶습니다!
미리 감사드립니다!
감사합니다,
답변1
귀하의 질문은 여전히 불분명하지만 다음과 같은 작업을 수행하려는 것 같습니다.
$ awk -F'[[:space:]]+|:' -v OFS=';' '{sub(/\..*/,"",$6); print}' file |
sort -nt';' -k3,3 -k2,2 -k1,1 -k4,6
26;6;2020;09;05;23;277.153;50.000;20493.667799
26;6;2020;09;06;23;277.430;50.131;20654.698008
답변2
awk를 사용하여 구분 기호를 변경하는 관용구는 다음과 같습니다.
awk -F 'input_field_separator' -v OFS='output_field_separator' '{$1=$1; print}' file
이 $1=$1
비트는 awk가 OFS rewrite를 사용하도록 강제합니다 $0
.
여기서 입력 필드 구분 기호는 공백 또는 콜론입니다.
awk -F '[[:blank:]]+|:' -v OFS=';' '{$1=$1; print}' file