私はこのスクリプトに従い、各行で何が起こっているのか理解しようとしています。次の行から抽出こここれには、いくつかのフィールドをソートする作業が含まれます。 14番目の例ではここ-k2,5
これは、2列と5列(数字列)が整列され、-k9
9列(非数字列)が整列されることを意味します。
# Process the STMs
cat db/TEDLIUM_release1/$set/stm/*.stm | sort -k1,1 -k2,2 -k4,4n | \
sed -e 's:<F0_M>:<o,f0,male>:' \
-e 's:<F0_F>:<o,f0,female>:' \
-e 's:([0-9])::g' \
-e 's:<sil>::g' \
-e 's:([^ ]*)$::' | \
awk '{ $2 = "A"; print $0; }'
} | local/join_suffix.py db/TEDLIUM_release1/TEDLIUM.150K.dic > data/$set/stm
しかし、上記のスニペット(ソート -k1,1 -k2,2 -k4,4n)、マッピングされ、-k1,1
3つのグループもあります。誰でも私がこれを理解するのを助けることができますか?
答え1
からman sort
:
-k, --key=POS1[,POS2]
start a key at POS1 (origin 1), end it at POS2 (default end of line)
...
POS is F[.C][OPTS], where F is the field number and C the character position
in the field; both are origin 1. If neither -t nor -b is in effect,
characters in a field are counted from the beginning of the preceding
whitespace. OPTS is one or more single-letter ordering options, which
override global ordering options for that key. If no key is given, use the
entire line as the key.
あなたが投稿したリンクの14番目の例は単に正しくありません。上記のマンページからの抜粋を-k2,5
見ると、ソートは「キー2と5に基づいて」行われず、フィールド2で行われていることは明らかです。渡す5. すべて一緒にソートキーとみなされます。
(BTW:ランダムなオンラインソースのコード例は、コマンドが実行するアクションのおおよそのアイデアを得るのに役立ちますが、コマンドをドリルダウンして実際に理解したい場合は理解する何が起こったのか、マニュアルページを読むこと(または少なくとも参照すること)を置き換える方法はありません。.);)