スクリプト機能のsedコマンドは機能しませんか?

スクリプト機能のsedコマンドは機能しませんか?

sedASCII 1を次に置き換えるコマンドラインがあります|

sed -e 's/^A/\|/g' file_name

これはうまくいきます。しかし、bashファイルの関数に入れると、次のようになります。

func(){
    sed -e 's/^A/\|/g'
}

動作しません:

func file_name

ファイルを表示する代わりに停止します。

私は間違えましたか?私のbashが確実にロードされるように新しいターミナルを開きました。

答え1

これを入力パラメータとして扱う必要がありますfile_name。関数のコマンドに魔法のように当てはまるわけではありません。

func() {
    sed -e 's/^A/\|/g' "$1"
}

渡された最初のパラメータはに格納され$1、2番目のパラメータはに格納される$2式です。

これはあなたのバージョンで動作します。 btw:func < file_name

答え2

実際にはかかりません。入力を待ちます:-)

あなたがこれをするか

func() # replace something in the file, i.e. modify it
{
    sed -e 's/^A/\|/g' -i "$1"
}

またはこれ

func() # output the contents of the file to console after applying sed
{
    sed -e 's/^A/\|/g' < "$1"
}

また、bash/POSIX シェルは C ではありません。

関連情報