ディレクトリ内の要素リスト(テキストファイル内)のエントリを見つけようとします。
以下は私が使用しているコードですが、コマンド出力をコンソールに送信することはbash
できません。grep
#!/bin/bash
FILENAME=$1
count=0
while read LINE
do
let count++
echo "$count $LINE"
grep -r $LINE /home/user/vaishnavi
done < $FILENAME
echo -e "\nTotal $count Lines read"
出力:
1 ASK
2 TELL
3 ORDER
4 NUMBER
5 SIZE
6 BASKET
7 FRUIT
8 VEGGIES
Total 8 Lines read
要素のリストのみを取得しますが、指定された位置に要素が表示される回数はインポートされません。
私のコードに問題がありますか?
ありがとうございます。
答え1
私のコードは次のようにすべきだと思います。
出力が次のようになりたい場合
Serial_Number Name_Of_Element 個数ファイル名 1 ファイル名 2
#!/bin/bash
FILENAME=$1
count=0
while read LINE
do
let count++
VAL=$(grep -r $LINE /home/user/vaishnavi | awk -F ':' '{print $1}' | sort -u )
NUM=$(grep -r $LINE /home/user/vaishnavi | wc -l)
echo "$count $LINE $NUM"
echo "$VAL"
done < $FILENAME
echo -e "\nTotal $count Lines read"
答え2
grep -xrHf elementsfile.txt /home/user/vaishnavi | sort | uniq -c
- x:行全体と一致します(ASKはBASKETと一致しないでください)。
- r:フォルダをスキャンしてください
- H:ファイル名の印刷(ファイル:一致)
- f: ファイルから一致させる要素を読み込みます。
これはファイルごとにソートされます。一致する要素で並べ替えるには、次を追加します。
| sort -k2 -t: