sha*_*aws 3 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
Run Code Online (Sandbox Code Playgroud)
有什么建议么?。
编辑:非常感谢大家。所有答案都是有效的,但我无法对所有答案进行投票。
awk '{for(i=1;i<=5;i++){name=FILENAME"_"i;print $i> name}}' your_file
Run Code Online (Sandbox Code Playgroud)
经过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
>
Run Code Online (Sandbox Code Playgroud)
为了总结我的评论,我建议这样的内容(未经测试,因为我没有示例文件):
NM=$(awk 'NR==1{print NF-2}' file.txt)
echo $NM
for (( i=1; i <= $NM; i++ ))
do
echo $i
awk '{print $'$i'}' file.txt > tmpgrid_0${i}.dat
done
Run Code Online (Sandbox Code Playgroud)