0

こんにちは私はbashを使用して、grepを使用してhtmlファイルからデータを抽出することでCSVファイルを作成しています。問題は、データを取得した後、sedを使用してデータを取り出し、その中にMy_comのような単語を入れると、私に夢中になることです。これが私のコードです。

time=$(grep -oP 'data-context-item-time=.*.data-context-item-views' index.html \
| cut -d'"' -f2)

title=$(grep -oP 'data-context-item-title=.*.data-context-item-id' index.html |\
cut -d'"' -f2)

sed "s/,/\My_commoms/g" $title
echo "$user,$views,$time,$title" >> test

このエラーが発生し続けますsed:読み取れませんフリッピング:そのようなファイルまたはディレクトリはありませんsed:読み取れません:そのようなファイルまたはディレクトリはありませんなど

私のコードの何が悪いのかについてのアドバイス

4

1 に答える 1

2

そのようなコマンドラインで直接sedontextを使用することはできません。sedはファイルを想定しているため、テキストをファイル名として読み取っています。最後から2番目の行でこれを試してください。

echo $title | sed 's/,/My_com/g'

そうすれば、sedはファイル(この場合はstdin)のテキストを確認できます。また、sedの引数に一重引用符を使用していることにも注意してください。この場合、違いはないと思いますが、一般的には、bashがコマンドをまったく混乱させないようにすることをお勧めします。

チェーンを使用したくない場合は、次のecho | sedように書き直すこともできます。

sed 's/,/My_com/g' <<< "$title"

ダッシュなどではなく、bashでのみ機能すると思います。これは「here-string」と呼ばれ、bashはその右側の<<<データをstdinのコマンドに渡すため、同じ効果が得られます。

于 2013-03-10T23:09:58.847 に答える