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

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

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

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

答え2

ksh、bash、またはzshの場合は、echoを使用してください。

$ echo SNP{1..3502}{a,b}       # {a..b} also works here.
SNP1a SNP1b SNP2a SNP2b SNP3a SNP3b SNP4a SNP4b SNP5a .....

この特別なケースでは、echo結果リストの前に「-」がなく、内部に特殊文字もないため、完全に問題ありません。

を使用する必要がある場合は、printf以下を試してください。

printf '%s\n' SNP{1..3}{a,b} | paste -s -d ' ' -

そして、awkを使用する必要がある場合は、以下を使用してください。エドモートンの答え

答え3

そしてbash

printf '%s ' SNP{1..3502}{a..b}

最後の末尾のスペースが問題の場合は、それを関数でラップします。

headers(){
    local pieces=( SNP{1..3052}{a..b} ) IFS=' '
    printf '%s' "${pieces[*]}" # add '\n' to get new line at the end
}

答え4

使用幸せ(以前のPerl_6)

raku -e 'my  @nbr = "SNP" xx 3502 Z~ 1..3502; \
         for @nbr -> $i {put $i ~ "a"; put $i ~ "b"};'   

または

raku -e 'my @nbr = "SNP" xx 3502 Z~ 1..3502; my @ltr = "a".."b"; \
         for @nbr -> $i {put $i ~ @ltr[0]; put $i ~ @ltr[1]};'  

または

raku -e 'my @nbr = "SNP" xx 3502 Z~ 1..3502; my @ltr = "a".."b"; \
         for @nbr -> $i {put $i ~ $_ for @ltr};' 

これを改善できることは間違いありませんが、作業は完了しました。このコードはラクZ 中位演算子~、Rakuの(チルダ)文字列連結演算子で使用されます。各識別子は別々の行に印刷されます。 3番目の例では、@ltr文字が$_(別名Rakuのテーマ変数)にロードされます。

Rakuで一連の識別子文字列を生成する方法の詳細については、以下のSOリンクを参照してください。

https://stackoverflow.com/questions/47999523/concatenating-lists-in-raku

関連情報