Linux
將文本轉換為表格形式
我有一個具有以下結構的文本文件:
aaa bbb ccc ddd eee fff 1 2 3 4 5 6 1.1 1.2 1.3 1.4 1.5 1.6 ggg hhh iii jjj kkk lll 7 8 9 10 11 12 2.1 2.2 2.3 2.4 2.5 2.6
我想要以下表格結構:
aaa 1 1.1 bbb 2 1.2 ccc 3 1.3 ddd 4 1.4 eee 5 1.5 fff 6 1.6 ggg 7 2.1 hhh 8 2.2 iii 9 2.3 jjj 10 2.4 kkk 11 2.5 lll 12 2.6
在此範例中,每列重複該模式 2 次,但實際文件重複該模式的次數更多,並且具有更多欄位。
paste
應該能夠勝任這項工作。這x.1
是文件的名稱paste <(grep -E '^[[:alpha:]]+$' x.1) \ <(grep -E '^[[:digit:]]+$' x.1) \ <(grep -E '^[[:digit:]]+[.][[:digit:]]+$' x.1)
你可以這樣做:
mkfifo 0 1 2 awk -v RS= '{print > NR%3}' < file & paste 1 2 0
如果任何段落大於管道緩衝區(Linux 上為 64k),則可能出現死鎖。