使用 Bash 转置未在列中分隔的数字
Transpose number not separated in columns using Bash
我试过 tr
function to transpose in bash but it's 不工作。例如tr 'abcd' 'jkmn'
...
想法是取一系列数字:
92121
92911
并切换它们,使它们看起来像这样:
99
22
19
21
11
这是一个测试数据集:
echo "92121
92911
29222
22222
22222
22222" > ~/Desktop/output.geno
我知道我们可以使用 分隔数字。
我觉得我可以用
for var in 1:96
do
tmp=$(cut -c var output.geno)
tr $tmp
done
@M。博索莱伊:尝试:
假设Input_file如下。
cat Input_file
92121
92911
29222
22222
22222
22222
以下代码可能会有所帮助。
awk '{for(i=1;i<=length([=11=]);i++){array[i]=array[i]?array[i] substr([=11=],i,1):substr([=11=],i,1)};MAX=MAX>i?MAX:i} END{for(j=1;j<MAX;j++){print array[j]}}' Input_file
NON-one 上述解的线性形式也如下
awk '{
for(i=1;i<=length([=12=]);i++){
array[i]=array[i]?array[i] substr([=12=],i,1):substr([=12=],i,1)
};
MAX=MAX>i?MAX:i
}
END{
for(j=1;j<MAX;j++){
print array[j]
}
}
' Input_file
输出结果如下。
992222
229222
192222
212222
112222
输入
$ cat file
92121
92911
29222
22222
22222
22222
输出
$ awk '
{
n=split([=11=],F,r)
for (i=1; i in F; i++)
a[NR,i] = F[i]
}
n>p { p = n }
END {
for(j=1; j<=p; j++)
{
str=a[1,j]
for(i=2; i<=NR; i++)
{
str=str a[i,j];
}
print str
}
}' file
992222
229222
192222
212222
112222
我试过 tr
function to transpose in bash but it's 不工作。例如tr 'abcd' 'jkmn'
...
想法是取一系列数字:
92121
92911
并切换它们,使它们看起来像这样:
99
22
19
21
11
这是一个测试数据集:
echo "92121
92911
29222
22222
22222
22222" > ~/Desktop/output.geno
我知道我们可以使用
我觉得我可以用
for var in 1:96
do
tmp=$(cut -c var output.geno)
tr $tmp
done
@M。博索莱伊:尝试: 假设Input_file如下。
cat Input_file
92121
92911
29222
22222
22222
22222
以下代码可能会有所帮助。
awk '{for(i=1;i<=length([=11=]);i++){array[i]=array[i]?array[i] substr([=11=],i,1):substr([=11=],i,1)};MAX=MAX>i?MAX:i} END{for(j=1;j<MAX;j++){print array[j]}}' Input_file
NON-one 上述解的线性形式也如下
awk '{
for(i=1;i<=length([=12=]);i++){
array[i]=array[i]?array[i] substr([=12=],i,1):substr([=12=],i,1)
};
MAX=MAX>i?MAX:i
}
END{
for(j=1;j<MAX;j++){
print array[j]
}
}
' Input_file
输出结果如下。
992222
229222
192222
212222
112222
输入
$ cat file
92121
92911
29222
22222
22222
22222
输出
$ awk '
{
n=split([=11=],F,r)
for (i=1; i in F; i++)
a[NR,i] = F[i]
}
n>p { p = n }
END {
for(j=1; j<=p; j++)
{
str=a[1,j]
for(i=2; i<=NR; i++)
{
str=str a[i,j];
}
print str
}
}' file
992222
229222
192222
212222
112222