ログファイルを分析していますが、私はbashでデータを準備しようとしています。マイフォルダ構造は次のようになります。fgrep結果にフォルダ名を追加する
<main_folder>
<folder_1>
<subfolder_1>
<log_1>
<log_2>
<subfolder_2>
<log_1>
<folder_2>
<subfolder1>
<log_1>
私はすべての<folder_n>
を通過し、いくつかの行を取得するためのfgrepを使用したいと思います。 <folder_n>
と<subfolder_n>
の名前(フルパスなし)を空白スペースで区切ってすべての行の先頭に追加したいと思います。
だから、結果はこのようなものになります。
folder_1 subfolder_1 text_1 text_2 text_3
folder_1 subfolder_2 text_1 text_2 text_3
folder_1 subfolder_2 text_1 text_2 text_3
folder_2 subfolder_1 text_1 text_2 text_3
私は私が必要とするテキスト行を取るコマンドを持っているが、結果の先頭に一部テキストが追加されますが、私は知りません結果の行にフォルダ名を追加する方法。
fgrep "Print ended" *.txt -a | awk '{ print $1 " " $2 " " $4}' | perl -ne 'print " TEST $_"'
私の質問は:私は~/main_folder
に位置していた場合、どのように
fgrep "Print ended" *.txt -a | awk '{ print $1 " " $2 " " $4}'`
ので、それが結果をFGREPする<folder_n>
と<subfolder_n>
を追加するコマンドを編集しますか?
'grep -F'は' fgrep'に相当する現代風ですが、どちらも動作するはずです。 – tripleee
ありがとうございます。 コマンド 'fgrep 'の編集方法を教えてください。" * .txt -a'で説明したフォルダ名をインクルードしましたか?どの地点からコマンドを実行すべきですか? –
これは文字通り、この答えの最初の文とそれに続く例です。複数のファイルで 'grep'を実行すると、一致したファイルの名前が渡された形式で各一致の前に表示されます。そのため、フォルダ構造を持つファイル名の束を渡すと、それが印刷されます。 (複数のファイル名を強制するために '/ dev/null'を追加することもありますが、' grep -H'を指定すると強制的にファイル名が出力されます)。 – tripleee