#!/bin/sh
count=1
while read line
do
found=$( grep M $line )
if [ "$found" ]; then
echo $count")" $line >> filesave.txt
fi
count=$((count+1))
done < log1.txt
しかし、次のようなエラーが発生します
./count.sh ./count.sh: syntax error at line 10: `found=$' unexpected
答え1
問題は、引用$line
符で囲まれていない変数参照です。
found=$( grep M $line )
および/または
echo $count")" $line >> filesave.txt`
どちらの場合も$line
二重引用符で囲む必要があります。
found=$( grep M "$line" )
echo $count")" "$line" >> filesave.txt`
この例では、 の行をファイル名として使用していますが、これは必要なものではないかもしれません。 から読み取った各行で文字log1.txt
列 を検索する場合は、次のようにします。log.txt
M
found="$( echo "$line" | grep M )"
この後、 は文字 が含まれている場合にのみ$found
等しくなります。$line
$line
M