これはわかりません。ファイルのすべての行を調べて、変数で指定されたWordと一致しているかどうかを確認する必要があります
コマンドの読み取りから始めましたが、その後何を使用するのかわからないので、grep
を試しましたが、誤って使用した可能性があります。
while read line; do
if [ $condition ] ;then echo "ok" fi
done<file.txt
ここにあなたのためのクイックがあります、単に私たちがやっていることは
1行目:ファイルを変数line
に読み取り中
2行目:正規表現に一致し、$line
をエコーします。「鳥」という単語に一致する場合は、その行をエコーします。このifステートメントで、ここで必要なアクションを実行します。
3行目:ファイルfoo.text
をパイプ処理するwhileループの終わり
#!/bin/bash
while read line; do
if [[ $line =~ bird ]] ; then echo $line; fi
done <foo.text
「鳥」は正規表現であることに注意してください。たとえば、bird.*Word
に置き換えると、同じ行を正規表現に一致させることができます。
foo.text
という名前のファイルで、次の内容で試してください。
my dog is brown
her cat is white
the bird is the Word
これを行う簡単な方法は、grep
(またはegrep
)を使用することです。
grep bird file.txt
2つの引数(ファイル名と変数)を渡す簡単なスクリプトを次に示します...その下にハードコードされたバージョンもあります。
#!/bin/bash
[ $# -lt 2 ] && echo "wrong number of args" && exit 1
file=$1
var=$2
while read line; do
if echo "$line" | grep -q "$var"; then echo "ok"; fi
done < "$file"
exit 0
[user@myserver ~]$ myscript file.txt some_text
または、引数として渡すのではなく、ファイル(および変数)をハードコーディングしたい場合...
while read line; do
if echo "$line" | grep -q "some_text"; then echo "ok"; fi
done < file.txt