2番目のawk onelinerでは、単に<
forを切り替えましたが、>
構文エラーが発生しました。>
条件文には許可されていませんか?
~/Desktop $ awk 'BEGIN{print 3<5 ? "Hello":"World"}'
Hello
~/Desktop $
~/Desktop $ awk 'BEGIN{print 3>5 ? "hello": "world"}'
awk: cmd. line:1: BEGIN{print 3>5 ? "hello": "world"}
awk: cmd. line:1: ^ syntax error
~/Desktop $
~/Desktop $ awk 'BEGIN{print 5<3 ? "Hello":"World"}'
World
~/Desktop $
~/Desktop $
ベストアンサー1
print
ステートメントは3つの形式のうちの1つを取りますawk
。
print > expression
print >> expression
print | expression
...ここで>
、>>
および次のビットはオプションです|
。expression
このコマンドを使用すると、計算結果の文字列で指定されたファイルprint > expression
に出力が移動されます。expression
ファイルが存在する場合は切り捨てられます(空になります)。これは、シェルで出力リダイレクトがどのように機能するかと同じように機能しますが、print
同じステートメントを2回実行すると、最初に関連するファイルをclose(expression)
閉じるために使用されない限り、ファイルは切り捨てられません。expression
コマンドとフォーマットも>>
シェルがこれらのトークンを処理する方法に触発されましたが、これらのフォーマットの詳細についてはドキュメントを参照してください。|
print
awk
あなたのコードに
print 3 > 5 ? "Hello" : "World"
これは構文と一致するため、というprint > expression
文字列を出力します。行の残りの部分には理解できない疑問符が表示され続けているため、これについて文句を言います。いくつかの実装では、このビットを3
5
awk
awk
5 ? "Hello" : "World"
expression
3
Hello
5
本物ブール値として使用される場合の値)。
あなたが一番したいことは
print ( 3 > 5 ? "Hello" : "World" )
または
print ( 3 > 5 ) ? "Hello" : "World"
これによりprint > expression
構文がトリガーされません。