0
我正在使用Linux shell腳本爲movielens數據創建5-fold交叉驗證。任何人都可以向我解釋什麼:Linux shell和sort -t和-k
sort -k 1,1n
是什麼意思?我知道這意味着從列1
開始,並在1n
結束,但1n
是什麼意思?- 我的數據就像
****::****::***
,也就是說,分隔符是::
,但是「::」和「::」都不適用於sort -t
選項。你能告訴我什麼是正確的方法來設置::
作爲分隔符? (sort -t " "
意味着,隔板爲空間;這個工程,但我的文件的分隔符不是空格。)
trap `rm -f tmp.$$; exit 1` 1 2 15 # trap begin to execute the cmd in the quote when it meet signal 1,2 and 15
batch=200000
totalTuple=1000000
#$$ is the process id
for i in 1 2 3 4 5 #five fold cross validation, train/test is one fold
do
head -`expr $i \* ${batch}` u.data | tail -`expr ${batch}` > tmp.$$ # take the ith 1/5 block
# expr return the cmd result as string
sort -t"\:\:" -k 1,1n -k 2,2n tmp.$$ > u$i.test
#sort -k -k, --key=KEYDEF sort via a key; KEYDEF gives location and type
#sort -t, --field-separator=SEP
head -`expr \($i - 1 \) \* ${batch}` u.data > tmp.$$
tail -`expr \(5 - $i \) \* ${batch}` u.data >> tmp.$$
sort -t"\:\:" -k 1,1n -k 2,2n tmp.$$ > u$i.base
done
'排序--help'有問題的答案。 – karakfa