0

bashを使用してテキストファイルを1行ずつ読み取り、特定の行を選択してベクターに保存しようとしています。作業中のテキスト ファイルには、cURL を使用してサーバーからダウンロードするファイルの名前が含まれています。関心のある各行の前に、# 文字で始まる説明行があります。ファイルを 1 行ずつ読み込んで、# が含まれているかどうかを確認します。その行に # が含まれている場合はスキップします。# を含まない行については、その情報を使用して cURL に渡し、問題のファイルを自動的にダウンロードできるようにします。これまでのところ、次のコードを使用して行ごとに読み取ることができます。

#! /bin/bash

while read line; do
    echo $line
done <file.txt

以下を試してみましたが、うまくいきません。

#! /bin/bash

while read line; do
    if [[ "$line" =~ \#*]]
    then 
        echo $line
    fi
done <file.txt

次のエラーが表示されます。

./script.sh: line 4: syntax error in conditional expression
./script.sh: line 5: syntax error near `then'
./script.sh: line 5: `  then '

OS X 10.8.2 (x86_64-apple-darwin12) に GNU bash 3.2.48(1) を使用しています。

この質問が他の場所で聞かれるのを見たことがあります。ただし、何らかの理由で私のマシンでは動作しません。

4

2 に答える 2

3

grepはこれに適しています:

grep -v "^#" file | xargs -n1 curl 
于 2013-01-25T17:29:42.610 に答える
2

あなたのコードでは、]] の前にスペースがありません。そして、あなたの正規表現は何でも一致しています。(ゼロ以上 #)

#! /bin/bash

while read line; do
    if ! [[ "$line" =~ ^\# ]]
    then 
        echo $line
    fi
done <file.txt
于 2013-01-25T17:35:27.997 に答える