[英]how do i sort lines in bash?
我的腳本無法對文件進行排序,目前存在一些問題。
該錯誤似乎已在此處本地化,在這里我對utt2spk文件進行了排序,如下所示。
for x in test train; do
for f in text utt2spk; do
sort data/$x/$f -o data/$x/$f
done
done
我有一個檢查文件是否已排序或重復的函數。 該函數檢查如下:
function check_sorted_and_uniq {
! awk '{print $1}' $1 | sort | uniq | cmp -s - <(awk '{print $1}' $1) && \
echo "$0: file $1 is not in sorted order or has duplicates" && exit 1;
}
並且總是觸發錯誤消息。
這個for-循環的問題是它不能正確地對數字進行排序。 在這種情況下,我有文字
fkdo-b-cen6 fkdo
fkdo-b-cen7 fkdo
fkdo-b-cen8 fkdo
flrp-b-an2121 flrp
flrp-b-an21 flrp
flrp-b-an22 flrp
flrp-b-an23 flrp
flrp-b-an24 flrp
flrp-b-an25 flrp
flrp-b-cen1 flrp
應該是
fkdo-b-cen6 fkdo
fkdo-b-cen7 fkdo
fkdo-b-cen8 fkdo
flrp-b-an21 flrp
flrp-b-an22 flrp
flrp-b-an23 flrp
flrp-b-an24 flrp
flrp-b-an25 flrp
flrp-b-an2121 flrp
flrp-b-cen1 flrp
那么為什么它不能正確排序呢?如何使它正確排序呢?
如果可以通過其他方式完成,那也可以,我只需要能夠在bash腳本中執行它即可。
sort --version
sort (GNU coreutils) 8.21
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Mike Haertel and Paul Eggert.
您想要的是GNU排序調用的-V
,-- --version-sort
文本中自然的(版本)數字排序
因此,您只需要在for
循環以及function check_sorted_and_uniq
使用sort -V …
function check_sorted_and_uniq
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.