列が共有文字列、異なる数字、繰り返し文字を共有する行を作成する必要があります。私が望む出力は次のとおりです。
SNP1a SNP1b SNP2a SNP2b ... SNP3502a SNP3502b
私はUnix / Linuxに初めて触れたので、私の試みは非常に初歩的です。これまで私は次のことをしました。
seq -f "SNP%1g" 1 3502 > header
awk '{print;print;}' header > header2
だからそれはすべてheader2
です:
SNP1
SNP1
SNP2
SNP2
...
SNP3502
SNP3502
ただし、各行にシフト合計を追加する方法はa
混乱しています。b
どんな助けでも大変感謝します!
ベストアンサー1
シェルを含むzsh
:
() { print ${(j[ ])@}; } SNP{1..3502}{a,b}
どこ:
SNP{1..3502}{a,b}
中かっこ拡張を使用したリストの生成$@
別名$argv
配列としてリストを使用できる匿名関数に渡されます。j[ ]
パラメータ拡張フラグを使用して、配列要素間に2つのスペースを連結します。- そして
print
それを印刷した人に渡してください。
他のシェルから:
zsh -c '() { print ${(j[ ])@}; } SNP{1..3502}{a,b}'
数字、プレフィックス、サフィックスのリストが別々の配列にある場合:
pre=( SNP )
num=( {1..3502} )
suf=( a b )
() { print ${(j[ ])@}; } $^pre$^num$^suf
そしてperl
:
perl -le 'print join " ", map {$n=$_; map "SNP$n$_", qw(a b)} (1..3502)'