行番号を追加するためにgrepのbashエイリアスを作成したいと思います。
alias grep='grep -n'
もちろん、これによりパイプラインのライン数も増えます。ほとんどの場合(例外なし)、パイプ内に行番号があることを望まない(少なくとも内部的には最後の行であれば問題ありません)、sed / awk / cutパイプを追加したくありません。取り出してください。
たぶん私の要件は、「grepが行の唯一のコマンドである場合にのみ行番号を追加する」ように単純化できます。特に見苦しいニックネームを要求せずにこれを行う方法はありますか?
ベストアンサー1
bash(またはすべてのPOSIXシェル)では、次のように関数を使用できます。
grep() {
if [ -t 1 ] && [ -t 0 ]; then
command grep -n "$@"
else
command grep "$@"
fi
}
この[ -t 1 ]
セクションでは[
コマンドを使用します。(また〜として知られているtest
)stdoutがttyに関連付けられていることを確認してください。
また、次の場合は[ -t 0 ]
行番号のみを追加するように指定したので、標準入力も確認してください。grep
ただパイプラインのコマンド。