unixfindコマンドエラー

ニックシュミック

私のコマンドは次のようになります。

P8.1 ~basicsys/win15/ex8/d1 cd 3 D A X F1 B

だから私は3つのパラメータを持っています:dir(ディレクトリを保持します)str(探している文字列im)num(行番号)

私がする必要があるのは、ファイルを調べて、strが行番号に表示されているかどうかを確認することです。

そして、私は次のようなものを印刷する必要があります:

[ファイル] [ディレクトリのツリーのどこかに行番号numにstrが出現した回数]。

出力:

A 1
B 3
D 2
F1 1
X 0

私のデバッグから、findコマンドを実行している行に問題があることがわかりました(しばらくの間)。

これは私のコードです:

dir=$1
shift
str=$1
shift
num=$1
shift
echo 'head -$num | tail -1' >| getLine
echo -n "" >| out
chmod +x getLine

while [ $# -gt 0 ]
 do
  echo -n $1 " " >> out
  find $dir -type f -name $1 -exec getLine {} \; >| tmp
  egrep -c $str tmp >> out
shift
done
sort out

多分問題はまたにあります echo 'head -$num | tail -1'

お願いします助けてください:/ありがとう!!!

F.ハウリ

最初

変数が展開されていることを確認するに'"引用符を二重引用符に置き換える必要があります$num

を使用する代わりにhead | tailsed:を試してください

find $dir -type f -name $1 -exec sed $num'q;d' {} \;

私の目的(純粋なを使用):

フォーク一時ファイルなし

#!/bin/bash

dir=$1 str=$2 num=$3
shift 3

for name ;do
    count=0
    while read file ;do
        mapfile -s $[num-1] -tn 1 lineNum <"$file"
        [ "$lineNum" ] && [ -z "${lineNum//*$str*}" ] && ((count++))
    done < <(find $dir -type f -name $name -print)
    echo $name $count
done |
    sort

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事