関数でheredocを使用してgrep

関数でheredocを使用してgrep

端末に貼り付けたテキストを解析する関数を作成したいと思います。

$ cat <<eof | grep --color sometext
> foo
> sometext
> sometext1
> a sometext
> asdf
> 
> eof
sometext
sometext1
a sometext

上記の操作が機能している間は、エイリアスまたはその機能を作成できません。

alias gsi='cat <<eof | grep --color "$1"'
gsi { cat <<eof | grep --color "$1" ; }

関数定義時にリダイレクトが行われないようです。

ベストアンサー1

alias 'gsi=<<eof grep --color'

置換がシェルコードとして解釈されるプリプロセッサテキスト置換と同じエイリアスとして機能することができます。

あなたのシステムはあなたがやった方法で動作しません"$1"gsi file.txtで置き換えられたcat <<eof | grep --color "$1" file.txtシェルはコマンドラインの解釈を行い、$1この時点であらかじめ実行しない限り、シェルの最初の位置引数は空にすることができますset something。だから"$1"ここで削除したいと思います。 UUOCを削除することもできます。

gsi() { cat <<eof | grep --color "$1" ; }

eof後ろの行が欠落しているため、構文的な観点から見ると間違っていますcat <<eof

おすすめ記事