2016-08-11 12 views
0

は、私は次のコードawkは、印刷行数

awk -v bookName="$bookName" -v authorName="$authorName" '/bookName:authorName/{print NR}' BookDB.txt 

示すように、私のbookDB.txt構文とテキストが含まれていません正確に "bookname:authorname"と一致し、一致する行番号を出力します。しかし、何も印刷していません。

コードの構文に間違いはありません。 ご協力いただければ幸いです。

答えて

2

問題は、あなたが行うことができない/ /以内にawk変数を使用しようとしていることです。

$0 ~ bookName ":" authorNameに条件を変更して、パターン全体のレコード$0を検索してください。

ファイル内のフィールドが:で区切られている場合あるいは、あなたも-F:を使用して入力フィールドセパレータを設定し、最初の2つのフィールドに文字列比較を使用することができます。

awk -F: -v book="$bookName" -v author="$authorName" ' 
    $1 == book && $2 == author{print NR}' BookDB.txt 
+0

はありがとうございました!!できます!! – JamesPoppycock