file.txt
날짜별로 내용을 정렬 하고 싶습니다 . 정렬할 날짜는 네 번째 테이블 데이터 <td></td>
라벨 에 있습니다.
예를 들어 내용은 다음과 같습니다 file.txt
.
<tr><td>some_name_here</td><td>number_code_here</td><td>2018Mar31</td><td>2018Mar01</td></tr>
<tr><td>some_name_here</td><td>number_code_here</td><td>2018Mar31</td><td>2017Jan31</td></tr>
<tr><td>some_name_here</td><td>number_code_here</td><td>2018Mar31</td><td>2018Apr02</td></tr>
<tr><td>some_name_here</td><td>number_code_here</td><td>2018Mar31</td><td>2017Dec25</td></tr>
원하는 출력:어떻게 해야 하나요?
<tr><td>some_name_here</td><td>number_code_here</td><td>2018Mar31</td><td>2017Jan31</td></tr>
<tr><td>some_name_here</td><td>number_code_here</td><td>2018Mar31</td><td>2017Dec25</td></tr>
<tr><td>some_name_here</td><td>number_code_here</td><td>2018Mar31</td><td>2018Mar01</td></tr>
<tr><td>some_name_here</td><td>number_code_here</td><td>2018Mar31</td><td>2018Apr02</td></tr>
명령을 사용했지만 sort
작동하지 않습니다.
cat file.txt 2> /dev/null | sort -t'>' -k9n -k9.4M -k9.7n
편집하다:이 참조 링크를 찾았지만 여전히 작동하지 않습니다. https://stackoverflow.com/a/16060031/7842707
답변1
<tr>
각 항목이 별도의 줄에 있는 경우 :
awk
+sort
해결책:
awk -F'[<>]' '{ print $(NF-4), $0 }' file.txt | sort -k1,1n -k1.5M | cut -d' ' -f2-
-F'[<>]'
<
- 및>
필드 구분 기호로 처리$(NF-4)
- 각 행의 마지막<td>
태그 값을 포함합니다(예:).2017Jan31
이는 정렬 키로 사용됩니다.-k1,1n
- 첫 번째 필드를 기준으로 숫자순으로 정렬(예: 날짜, 연도 기준)-k1.5M
- 날짜와 월은 5번째 문자부터 정렬됩니다.cut -d' ' -f2-
- 보조 정렬 키 제거(첫 번째 필드)
산출:
<tr><td>some_name_here</td><td>number_code_here</td><td>2018Mar31</td><td>2017Jan31</td></tr>
<tr><td>some_name_here</td><td>number_code_here</td><td>2018Mar31</td><td>2017Dec25</td></tr>
<tr><td>some_name_here</td><td>number_code_here</td><td>2018Mar31</td><td>2018Mar01</td></tr>
<tr><td>some_name_here</td><td>number_code_here</td><td>2018Mar31</td><td>2018Apr02</td></tr>