0

テキスト ファイル内のエントリを検索し、エントリに対応するテキストを出力する必要があるプログラミングの課題に取り組んでいます。例として、次のようなエントリがあるとします。

ジョン・ドウ

34 正しい方法

ハリファックス

465-0394

、そしてユーザーがキーワードとして HALIFAX を入力すると、Halifax がある行を見つけて、このエントリに関連するすべてのテキストを出力したいと思います。注意が必要なのは、これらのコマンドを使用すると割り当てが受け入れられないため、grep、sed、または awk を使用せずにこれをすべて実行することです。正規表現を使おうと思ったのですが、これらのテキスト操作は 1 行でしかできず、ファイル全体に対して行う必要があります。今のところ私は困惑しており、助けていただければ幸いです!

アレックス

4

3 に答える 3

1

bashスクリプトのファイル全体を1行ずつ読み取り、その行に検索語が含まれているかどうかを確認する必要があります

cat $FILENAME | while read LINE
do
       if [[ $LINE =~ *HALIFAX* ]] then
          echo "I found HALIFAX"
       fi
done

ここからは、残りを簡単に印刷できるはずです。

于 2013-07-12T02:24:10.717 に答える
0

これを行うには、ファイルを 1 行ずつ読み取る while ループを使用します。

#set the delimiter to newline
IFS_backup=$IFS
IFS=$'\n'

#variable to calculate line number
lineNum=0
while read a1
do
let "lineNum++" #increment variable for each line 

#variable a1 store the value of each line 

#do comparision with $a1 by user input string
#if string match then value of lineNum equal to the line number of file
# containing user input string

done<filename
于 2013-07-12T02:24:38.260 に答える
0

これは、タグからの bash スクリプトであると想定しています。私の提案は、テキスト ファイルを 1 行ずつ配列に読み取り、配列をループ処理して、各文字列内のキーワードを検索することです。これは、ワイルドカードを使用して行うことができます。リンクは次のとおりです。 String contains in Bash。「このエントリに関連するすべてのテキストを印刷する」ことを明確にしていただけますか?

于 2013-07-12T02:18:13.887 に答える