簡體   English   中英

排序bash參數

[英]Sorting bash arguments

我有以下幾行:

Is,C0Cf[0],0x0,LutValue,0,11,0x0
Is,C1Cf[0],0x0,LutValue,0,11,0x0
Is,C0Cf[1],0x0,LutValue,0,11,0x0
Is,C1Cf[1],0x0,LutValue,0,11,0x0
     .
     .
     .

如何根據第二列對其進行排序,首先是所有C0Cf [0] ... C0Cf [50],然后是C1Cf ..?

嘗試這個:

sort -n -k 2 -t, inputfile.txt

例如:

$ cat inputfile.txt
Is,C0Cf[0],0x0,LutValue,0,11,0x0
Is,C1Cf[0],0x0,LutValue,0,11,0x0
Is,C0Cf[1],0x0,LutValue,0,11,0x0
Is,C1Cf[1],0x0,LutValue,0,11,0x0
$ sort -k 2 -t, inputfile.txt
Is,C0Cf[0],0x0,LutValue,0,11,0x0
Is,C0Cf[1],0x0,LutValue,0,11,0x0
Is,C1Cf[0],0x0,LutValue,0,11,0x0
Is,C1Cf[1],0x0,LutValue,0,11,0x0
$

-k 2按第二個字段排序。 -t, makes ,字段分隔符。 -n按數值排序。

您需要首先在第二列上按字母順序排序,然后將該列分成兩列,然后對方括號中的數字進行第二排序。

sed 's/\[/,/' input-file \
| sort -t, -k2,2 -k3,3n \
| sed 's/\(,[^,]*\),/\1[/'

如果輸入中可以包含諸如C10Cf之類的字符串,則還需要替換第一個C,並使其成為主要的排序數字:

sed 's/,C/,/;s/\[/,/' input-file \
| sort -t, -k2,2n -k3,3n \
| sed 's/,\([^,]*\),/,C\1[/'

sort具有命令行參數,您可以執行以下操作: -t指定分隔符, -k指定要進行排序的字段

因此您可以使用sort -t',' -k2 ,盡管我不得不承認我還沒有嘗試過!

暫無
暫無

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

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