bash의 명령에 테이블의 각 행의 값 세트를 할당하십시오.

bash의 명령에 테이블의 각 행의 값 세트를 할당하십시오.

\t로 구분된 3개의 열이 있는 txt 파일(input.txt)이 있습니다.

62M__29_length_73210_cov_19.6684    28981-31993    minus
61M__32_length_66572_cov_22.1672    22311-25323    minus
60M__65_length_73281_cov_15.6315    28978-31990    minus
59M__78_length_80030_cov_19.1814    28973-31985    minus
58M__28_length_80029_cov_24.2362    28972-31984    minus
57M__31_length_73253_cov_24.4297    41300-44312    plus
56M__32_length_73450_cov_26.6071    28975-31987    minus
55M__29_length_73232_cov_26.5615    41244-44256    plus
54M__38_length_66570_cov_23.8255    41307-44319    plus

다음과 같이 각 행의 값을 사용하여 명령을 실행해야 합니다.

blastdbcmd -db mydatabase -entry "row_1_column_1" -range "row_1_column_2" -strand "row_1_column_3" -out out.fa

예를 들어 행 1의 경우 다음과 같습니다.

blastdbcmd -db mydatabase -entry 62M__29_length_73210_cov_19.6684 -range 28981-31993 -strand minus -out out.fa

답변1

그리고 bash:

while IFS=$'\t' read -r entry range strand; do
  blastdbcmd -db mydatabase -entry "$entry" -range "$range" -strand "$strand" -out out.fa
done <input.txt

입력 파일을 한 줄씩 읽고 각 줄을 세 개의 탭으로 구분된 변수로 나눕니다. 그런 다음 이 변수를 사용하여 명령을 실행합니다.

답변2

cat은 xargs에 입력 파일을 추가하고 원하는 명령줄로 다시 형식화합니다. 그런 다음 bash에 명령줄을 입력하고 표준 출력을 out.fa 로그 파일에 저장합니다.

cat input.txt | xargs -r -l printf \
'blastdbcmd -db mydatabase -entry %s -range %s  -strand %s\n' | bash > out.fa

관련 정보