[英]problems transposing columns using cut
我想將3列的文本文件轉置為三個單獨的文件,每個文件一行。 換句話說,請使用以下文件:
in_file中
1 22 0.8
4 21 0.73
3 30 1.56
5 12 0.92
並生成以下3個文件:
out_file1
1 4 3 5
out_file2
22 21 30 12
out_file3
0.8 0.73 1.56 0.92
我試圖使用cut來做到這一點:
cut -d' ' -f1 in_file | tr -s '\n' '\t' >> out_file1
cut -d' ' -f2 in_file | tr -s '\n' '\t' >> out_file2
cut -d' ' -f3 in_file | tr -s '\n' '\t' >> out_file3
但是,我得到的是:
out_file1
1 4 3 5
out_file2
22 21 30 12
out_file3
0.8
0.73
1.56
0.92
我不知道為什么它適用於前兩列而不是第三列。
感謝您的幫助!
如果awk可用,則要快一點
awk '{ for( i=1; i<=NF; i++) printf( "%s ", $i) > ("file" i)}' YourFile
注意:- >
而不是>>
因為awk僅在打開文件時評估重定向(因此在這種情況下,創建時不添加)
對於您的剪切問題,分隔符在列之間始終是1個空格嗎
您的問題很可能是您在分隔符中鍵入的,而不是\\t
,它是文字標簽,這是一個循環,執行所有三個文件:
for i in {1..3}; do
cut -d$'\t' "-f${i}" in_file | column >> "outfile_${i}.txt"
done
在這里,我們遍歷序列{1..3}
,使用特殊語法將定界符設置為tab: -d$'\\t'
,將數據通過管道傳遞到column
, column
將自動將值排隊並將其附加到正確的文件中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.