簡體   English   中英

使用cut轉換列時出現問題

[英]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' ,將數據通過管道傳遞到columncolumn將自動將值排隊並將其附加到正確的文件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM