2016-03-24 10 views
-3

私は位置パラメータA-Bを間隔としており、この間隔をファイルから印刷する必要があります。例では$。/ File.sh 5-10ですので、スクリプトの行を5と10の間で印刷する必要があります。間隔でスクリプトの位置パラメータを使用する方法

+2

これは何も試しましたか?どのように(あなたの議論を無視して)ファイルからの行間隔を印刷するかを知っていますか? –

答えて

0

POSIX準拠のソリューション:組み込みのreadコマンドを使用して範囲を分割します。

IFS=- read a b <<EOF 
$1 
EOF 

bashには、よりシンプルなオプションがあります。これらのIFS=- read a b <<< "$1"

  1. [[ $1 =~ ^(.*)-(.*)$ ]] && a=${BASH_REMATCH[1]} b=${BASH_REMATCH[2]}

いずれも外部プログラムを実行するために、新しいプロセスをfork伴いません。

1

ファイルが20行あり、行5-15を印刷したいとします。このコマンドを実行する方法は次のとおりです。

sed -n '5,15p' {name_of_file} 

{name_of_file}を実際のファイル名に置き換えます。

私はあなたのスクリプト全体を書くつもりはありませんが、$ 1(5-15)をとり、そのデータを解析することができます。

fieldOne=$(echo $1 | awk -F"-" '{print $1}') #This will equal 5 
fieldTwo=$(echo $1 | awk -F"-" '{print $2}') #This will equal 15 
+0

パラメータは1つだけです$ 1(5-15) –

+0

あります。私の答えを更新して$ 1をパースする方法を示しました。 – bluerojo

+1

また、ユーザが範囲を正しく指定したと仮定してください: 'awk" $ {1/- } p "...'(ダッシュをカンマで置き換え、 'p'を追加してください)。しかし、全体として、範囲を書き込む方法を忘れてしまったと想定し、その範囲を検証することをお勧めします。 –

関連する問題