bash - 将文件拆分为多个文件(按列)

标签 bash awk split cut

我有一个文件 data.txt,其中有 200 列和行(方矩阵)。所以,我一直在尝试将我的文件拆分为 200 个文件,然后每个文件都包含大数据文件中的一列。这些是我两次尝试使用 cut 和 awk 的地方,但我不明白为什么不起作用。

NM=`awk 'NR==1{print NF-2}' < file.txt`
echo $NM

for (( i=1; i = $NM; i++ ))
do
echo $i 
cut -f ${i} file.txt > tmpgrid_0${i}.dat
#awk '{print '$i'}'  file.txt > tmpgrid_0${i}.dat
done

有什么建议吗?

编辑:非常感谢你们所有人。所有答案均有效,但我无法对所有答案投赞成票。

最佳答案

awk '{for(i=1;i<=5;i++){name=FILENAME"_"i;print $i> name}}' your_file

测试了 5 列:

> cat temp
PHE  5  2 4 6
PHE  5  4 6 4
PHE  5  4 2 8
TRP  7  5 5 9
TRP  7  5 7 1
TRP  7  5 7 3
TYR  2  4 4 4
TYR  2  4 4 0
TYR  2  4 5 3
> nawk '{for(i=1;i<=5;i++){name=FILENAME"_"i;print $i> name}}' temp
> ls -1  temp_*
temp_1
temp_2
temp_3
temp_4
temp_5
> cat temp_1
PHE
PHE
PHE
TRP
TRP
TRP
TYR
TYR
TYR
> 

关于bash - 将文件拆分为多个文件(按列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24116307/

相关文章:

linux - 变量没有被回显

python - 创建 `n` 子串的详尽列表

java - 删除文本中数字中的多余空格

linux - 检查串口设备是否工作,否则重启

bash - 循环退出后的局部变量

bash - 如何在 bash for 循环中从更大的文件列表中复制/列出具有编号名称模式的文件?

json - 搜索并替换很大文件中的字符串

linux - 用awk添加行数

bash - 剪切粘贴,同时保留空匹配的最后一个空白行(awk 或 sed)

java - 按字母和数字拆分 Java 字符串