私のファイルの内容:
123
**1
**
各単語を表示するスクリプトを試してください。
for i in $(cat $myfile)
do
echo "$i"
done
その結果、echo *
現在のディレクトリにあるファイルが一覧表示されますが、その理由はわかりません。それで、*
以前のエコーを処理してみました。
他のスクリプトの内容:
for i in $(cat $myfile)
do
if [[ $i == *\+ ]](regex pattern find 1 * or more.)
then
(?what should I do. I tried i="\*",i="*" etc.; it doesn't work)
fi
echo "$i"
done
ベストアンサー1
ファイル名のグロービングは、ではなくfor
拡張される-lineで発生します。$(cat $myfile)
echo
ファイルの内容を繰り返すときは、以下を使用してくださいread
。
while IFS= read -r words; do
printf '%s\n' "$words"
done <"$myfile"
また見なさい:
- 「IFS=read-r-line」を理解する
- シェルループを使用してテキストを処理するのはなぜ悪い習慣と見なされますか?
- bash / POSIXシェルで変数を引用することを忘れてしまうセキュリティリスク
スペースで区切られた各単語を独自の出力行に表示するには、次の手順を実行します。
awk '{ for (i = 1; i <= NF; ++i) print $i }' "$myfile"