2

やりたいことをどうしようかと朝からずっと考えていたのに… やばい感じになってきた!

.txt ファイルに行と列の配列があります。したがって、この情報を提供するスクリプトを作成したいと思います。

端末に入力すると ( script.sh 1 2 3 )、.txt ファイルの列 1 から 3 が返されます。

ターミナル ( script.sh ) に入力すると、列 5 から最後の列までが表示されます。

端末に入力すると ( script.sh 1 2 3 -ginsulin )、「insulin」という単語を含む行の列 1 から 3 が表示されます。ここの -g は「遺伝子」を意味するので、目的はその遺伝子を探すことです。

必要な列、または変数を導入しない場合はすべての列を提供するコードを作成しましたが、-g 変数と遺伝子変数を使用することはできません... 何か考えはありますか?

これが私のコードです:

#!/bin/bash

var="$(echo $@ | tr " " ",")"

if [ $# = 0 ]; then
awk '{for (x=5; x<=NF; x++) {printf "%s ", $x } printf "\n" }' affy.txt
else
cat affy.txt | cut -d" " -f$var
fi

ありがとうございました!

4

2 に答える 2

0

からの検索文字列を awk スクリプトに認識させたいとします-g。値をスクリプトに渡すには、 の-v引数でうまくいきましたgawk。変数内のスクリプトで -g の引数を取得したらlookfor(たとえば、 を使用getopt)、次を実行します。

 gawk -v searchtext="$lookfor" -- '$0 ~ searchtext { print $1, $2, $3 }'

-v引数は をsearchtext参照します。$lookforつまり、-gbash スクリプトの引数は です。次に$0 ~ searchtext、検索テキストが行のどこかにある任意の行を選択します。一致する行については、最初の 3 つのフィールドが出力されます。

于 2013-10-16T13:39:47.523 に答える