grepの出力をインデントする方法は? [コピー]

grepの出力をインデントする方法は? [コピー]

タブ/スペースにインデントするには、grepの出力が必要です。

インデントされていない単純なバージョンは次のとおりです。 MyCmd | grep "id:"

私は成功せずにこれを試しました。MyCmd | grep "id:" | echo " "

答え1

awkgrep許可されている場合は、次のことができます。

MyCmd | awk '/id:/ {print "   " $0}'

あるいは、grepが必要な場合は、sed次のことが役立ちます。

MyCmd | grep "id:" | sed -e 's/^/   /'

このawkバージョンは、「id:」を含む行で独自のパターンマッチングを実行し、その行の前のスペースを印刷します。このsedバージョンはgrepすでに行ったのと同じことを行いますが、各行の先頭を空白に置き換えます(正規表現は行^の先頭と一致します)。

答え2

代わりに、以下を使用してくださいsed

MyCmd | sed 's/^.*id:/\t&/'

id:一致する行の先頭にタブ文字を一致させて紹介します。

例:

% sed 's/^foo/\t&/' <<<'foobar' 
    foobar

関連情報