특정 문자열과 다양한 숫자 및 문자를 사용하여 시퀀스 만들기

특정 문자열과 다양한 숫자 및 문자를 사용하여 시퀀스 만들기

열이 공유 문자열, 다른 숫자, 반복 문자를 공유하는 행을 만들어야 합니다. 내가 원하는 출력은 다음과 같습니다.

SNP1a  SNP1b  SNP2a  SNP2b ... SNP3502a  SNP3502b

나는 유닉스/리눅스를 처음 접했기 때문에 내 시도는 매우 초보적입니다. 지금까지 나는 다음을 수행했습니다.

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[ ]매개변수 확장 플래그를 사용하여 배열 요소 사이에 두 개의 공백을 연결합니다.
  • 그리고 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};' 

이것이 개선될 수 있다는 것은 의심의 여지가 없지만 작업이 완료되었습니다. 이 코드는 Raku의Z 중위 연산자~, Raku의 (물결표) 문자열 연결 연산자 와 함께 사용됩니다 . 각 식별자는 별도의 줄에 인쇄됩니다. 세 번째 예에서는 @ltr문자가 $_(일명 Raku의 테마 변수)에 로드됩니다.

Raku에서 일련의 식별자 문자열을 생성하는 방법에 대한 자세한 내용은 아래 SO 링크를 참조하세요.

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

관련 정보