特定の文字列とさまざまな数字と文字を使用したシーケンスの作成

特定の文字列とさまざまな数字と文字を使用したシーケンスの作成

列が共有文字列、異なる数字、繰り返し文字を共有する行を作成する必要があります。私が望む出力は次のとおりです。

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)'

おすすめ記事