awk 명령을 통해 텍스트 파일 편집

awk 명령을 통해 텍스트 파일 편집

저는 이 명령을 처음 접했고 지금까지 몇 가지를 시도했지만 매번 실패했습니다.

다음과 같은 텍스트 파일(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

이 텍스트 파일로 무엇을 하고 싶나요? 설명하겠습니다!

  1. 먼저 파일을 다시 정렬하고 싶습니다.일/월/년/시/분/초체재. 하지만 날짜와 관련된 다른 모든 데이터는 날짜에 따라 다시 정렬되어야 합니다. 명령을 통해 이를 달성할 수 있습니까 awk?
  2. 둘째, 다음과 같은 출력을 보기 위해 텍스트 파일을 정렬하고 싶습니다(기본적으로 ";" 문자로 빈 줄을 변경하고 싶습니다).
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

관련 정보