awkでカスタムbash関数を使用する

awkでカスタムbash関数を使用する

AWKでbash機能を使用できますか?

サンプルファイル(文字列、int、int、int)

Mike 247808 247809 247810

値を10進数から16進数に変換してみてください。

シェルスクリプトの内部または内部で定義された関数です.bashrc

$ awk '{print $1 ; d2h($2)}' file

awk: calling undefined function d2h
 input record number 1, file file
 source line number 1

ベストアンサー1

次の機能を試してくださいsystem()

awk '{printf("%s ",$1); system("d2h " $2)}' file

あなたの場合、コマンドの出力がsystem呼び出され、d2h 247808次にprintf出力に追加されます。

Mike 3C800

編集する:

system代わりに、私はそれにアクセスする方法を見つけることができshません。しかし、現在bashスクリプトの機能を引き続き使用できます。bash.bashrc

#!/bin/bash
d2h() {
    # do some cool conversion here
    echo "$1" # or just output the first parameter
}
export -f d2h
awk '{printf("%s ",$1); system("bash -c '\''d2h "$2"'\''")}' file

注:-f次の目的で使用されています関数のエクスポート変数ではありません。

編集2:

理由はわかりませんが、Ubuntu 16.04では機能しません。 Ubuntu 14.04で実行されたので、これは奇妙です。

おすすめ記事