0

lynxw3m、またはlinksのようなテキスト ブラウザで、使用可能なリンクのリストから一括クエリを実行する必要があります。結果はキーワードでフィルタリングされ、元のリストに追加する必要があります。例として、リストを次のようにしlist.txtます。

"http://dict.cc//?s=Chemical"
"http://dict.cc//?s=Fenster"

一度に 1 つのリンクのみを送信すると、結果を抽出できます。

head -n 1 list.txt | xargs links -dump | sed -n '/NOUN/p'
tail -n 1 list.txt | xargs links -dump | sed -n '/NOUN/p'

期待どおりに動作しますが、そうではありません:

cat list.txt | xargs links -dump | sed -n '/NOUN/p'

また

for line in `cat list.txt`; do links -dump $line ; done

私は何を間違っていますか?次のステップでは、操作後にlist.txtが次のようになるように、出力を list の正しい行に追加する必要があります。

"http://dict.cc//?s=Chemical" edit  NOUN   a chemical | chemicals       -
"http://dict.cc//?s=Fenster" NOUN   das Fenster | die Fenster    edit

貼り付けなどの他のツールとの組み合わせまたは使用によって可能になるはずです。これは上記のようには機能しません。より良い解決策は何ですか?:

for line in `cat list.txt`; do echo -n $line && links -dump $line; done

この例はデモンストレーション用です。 dict.cc以外のサイトを使用します。残念ながら API/REST は利用できません。

4

2 に答える 2

1

xargs引数の数を制限しない限り、一度に複数の引数をプログラムに渡しますxargs -n1 links -dump。おそらく、リンクは 1 つの引数しか受け入れません。URL 内の正確なファイルのみが必要で、他のリンクされたドキュメントが必要ない場合は、curl.

for line in cat list.txt任意の空白で分割します。list.txtそのため、行にスペースが含まれていると機能しません。

リストを反復するには、これを試してください:

cat 'list.txt' | while IFS= read -r line; do
  echo -n $line && links -dump $line
done
于 2016-04-17T22:41:31.757 に答える