Bashシェルからパス、行インデックス、および行の内容を取得する方法は?

Bashシェルからパス、行インデックス、および行の内容を取得する方法は?

ファイルがありますが、ファイルからいくつかのテキストを検索し、ファイルパス、i検索されたコンテンツの行インデックス、および行コンテンツをエクスポートしたいと思います。

私は次のコマンドを使用します。

grep -rnw 'path-file' -e 'patter'

しかし、結果は次のようになります。

tree.sh:1:abc xyz

テーブルの各行を取得するには:

tree.sh - 1 - abc xyz

答え1

あなたのgrepサポートを仮定すると--color

grep --color=always -rnw -e 'pattern' 'path-file' | sed -e 's/:/ - /;s// - /'

答え2

awkを使用して解析できます。

$ echo "tree.sh:1:abc xyz" | awk 'BEGIN {FS=":| "} {print $1}'
tree.sh
$ echo "tree.sh:1:abc xyz" | awk 'BEGIN {FS=":| "} {print $2}'
1
$ echo "tree.sh:1:abc xyz" | awk 'BEGIN {FS=":| "} {print $3}'
abc
$ echo "tree.sh:1:abc xyz" | awk 'BEGIN {FS=":| "} {print $4}'
xyz

元の質問が修正されたので、sedオプションを追加しました。

$ echo "tree.sh:1:abc xyz" | sed -e "s/:/ - /g"
tree.sh - 1 - abc xyz

関連情報