オプションのパラメータを持つawk関数

オプションのパラメータを持つawk関数

ngtこれは、awk関数のオプションのユーザー引数を受け入れる良い方法ですか?

function nbstring(str, ngt) {
  ## Test whether string STR is non-blank.
  ## Return true when STR is non-blank.
  if (length(gensub(/[[:blank:]]+/, "", "g", str)) > 0) {
   if ( ngt == "dump" ) { print "return 1 for " str }
   return 1
  } else {
   if ( ngt == "dump" ) { print "return 0 for " str }
   return 0
  }
 }

私もこの条件を書いた。

if (str && length(gensub(/[[:blank:]]+/, "", "g", str)) > 0) {

私は同じ結果を得ました。

str &&それではあえてする必要はないようだが?

ベストアンサー1

文字列にスペースがないかテストしますか?これはすべてのPOSIX awkに当てはまります(POSIX以外のgensub()関数*sub()や呼び出しは必要ありませんlength())。

function nbstring(str, ngt,    rslt) {
  ## Test whether string STR is non-blank.
  ## Return true when STR is non-blank.
  rslt = ( str ~ /[^[:blank:]]/ ) 
  if ( ngt == "dump" ) {
    printf "return %d for %s\n", rslt, str
  }
  return rslt
}

おすすめ記事