Linux 文本處理工具記錄
Shuffle lines of multi files
現(xiàn)在有 1000 個(gè)文本文件(0.txt ~ 999.txt),每個(gè)文件大概 11M,總共 11G,我想把這 1000 個(gè)文本文件的內(nèi)容隨機(jī)組合成一個(gè)文件。
用cat *.txt | shuf > random試了下,大概第 8 秒內(nèi)存占用就達(dá)到 96%,然后就不再上漲了,最后大概用了 55 秒完成,要求也完美達(dá)成。
輸出第n到m個(gè)詞
一個(gè)文本文件,可能有多行,每行有多個(gè)單詞,單詞通過空格分隔,現(xiàn)希望輸出第 100 到第 500 ([100,500],閉區(qū)間) 個(gè)詞。
tr '\n' ' ' < inputfile | cut -d' ' -f 100-500 > outputfile
edgelist 轉(zhuǎn) csv
將 edgelist 文件轉(zhuǎn)換為 csv 文件,即在文件頭添加 "source,target",且將空格替換為逗號(hào)
sed -e '1i source,target' -e 's/ /,/g' test.edgelist > test.csv
或
awk 'BEGIN{print "source,target"}{print $1","$2}' test.edgelist > test.csv
表格化輸出
column -t -s ',' result.csv
集合操作
comm 輸入兩個(gè)排序后的文件,輸出三列,第一列僅出現(xiàn)在第一個(gè)文件中,第二列僅出現(xiàn)在第二個(gè)文件中,第三列在兩文件中都有
參數(shù) 123 控制不輸出哪些列
交集 comm -12 <(sort test|uniq) <(sort test1|uniq) comm -12 <(ls) <(ls|head)
差集1 comm -13 <(sort test|uniq) <(sort test1|uniq) comm -13 <(ls) <(ls|head) 出現(xiàn)在第二項(xiàng)中而不出現(xiàn)在第一項(xiàng)中
差集2 comm -23 <(sort test|uniq) <(sort test1|uniq) comm -23 <(ls) <(ls|head) 出現(xiàn)在第一項(xiàng)中而不出現(xiàn)在第二項(xiàng)中
并集 cat test test1 |sort|uniq

浙公網(wǎng)安備 33010602011771號(hào)