簡體   English   中英

Linux-根據帶有頭和尾的鍵位置對文件排序

[英]Linux - Sort a File based on key position with header and trailer

下面列出了需要在Linux中排序的文件(未排序文件)中的列表,最好是在單行linux命令中進行排序。

03123456789abcd
02987654321pqrs
02123456789mnop
03987654321stuv
04123456789ghjk
01000000000
99000000000
97000000000
98000000000

所需的排序文件輸出:

01000000000
02123456789mnop
03123456789abcd
04123456789ghjk
02987654321pqrs
03987654321stuv
97000000000
98000000000
99000000000

需求:

  • 如果前兩個字符為01,則為標頭
  • 如果前兩個字符大於90,則它們為預告片
  • 排序順序:位置3-11,然后位置1-2

我嘗試了一個簡單的排序命令

$sort unsorted-file > sorted-file. 

要求3失敗。 然后我嘗試

$sort -k 1.3, 1.11 -k 1.2 unsorted-file > sorted-file

由於位置3的全零,因此預告片記錄將其排在文件頂部。

我知道的其他選擇是剝離標題和尾部。 對文件進行排序,然后將頭文件和尾文件合並回去。 有沒有辦法在一個linux(復雜)命令本身中執行操作?

謝謝你的時間。

-R-

( grep '^01' unsorted-file
  grep -E -v '^(01|9)' unsorted-file | sort -k 1.3,1.11 -k 1.1
  grep '^9' unsorted-file ) > sorted-file

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM