GNU/Linux >> Linux の 問題 >  >> Linux

Awkで`sub`を実行した後、どこで新しい文字列を取得しますか?

Awkプログラミング言語から

関数sub ( r, s , t ) 最初に、正規表現rと一致する左端の最長の
部分文字列を検索します ターゲット内
文字列t;次に、部分文字列を置換
文字列sに置き換えます。 。

関数sub(r,s) sub(r,s,$0)の同義語です 。

sub ( /ana/, "anda" , "banana" ) 、たとえば、banana
bandadaに置き換えられます 。

sub ( r, s , t )を実行した後 、新しい文字列を取得するにはどうすればよいですか?
たとえば、sub ( /ana/, "anda" , "banana" ) 、新しい文字列bandadaを取得するにはどうすればよいですか ?

サブ関数は、行われた置換の数を返します。

subのリターンです 0または1のどちらか? subであるため、複数にすることはできません。 最初の一致のみを見つけて置き換えますか?

ありがとう。

承認された回答:

GNU awkマニュアルから9.1.3文字列操作関数:

sub()の3番目の引数 変数、フィールド、または配列
要素である必要があります。 awkの一部のバージョンでは、3番目の引数を左辺値ではない
式にすることができます。このような場合、sub() それでも
パターンを検索し、0または1を返しますが、
置換の結果(存在する場合)は、配置する場所がないため
破棄されます。このようなバージョンのawkは、次のような式を受け入れます。

sub(/USA/, "United States", "the USA and Canada")

歴史的な
互換性のために、gawkはそのような誤ったコードを受け入れます。ただし、
他の変更できないオブジェクトを3番目のパラメータとして使用すると、致命的なエラーが発生し
、プログラムは実行されません。

したがって、答えは変数を使用することです:

awk 'BEGIN{t = "banana"; sub(/ana/,"anda",t); print t}'
bandana

Linux
  1. 環境変数のデフォルトという用語はどこで設定されますか?

  2. Linux –実行中のプロセスの壁掛け時計の時間を取得する方法は?

  3. Lsコマンドの結果の補足を取得しますか?

  1. maven を実行しているマシンの一時フォルダーを取得するにはどうすればよいですか?

  2. RHEL6 の gem コマンドはどこにありますか?

  3. 実行中のプロセスのウォールクロック時間を取得するにはどうすればよいですか?

  1. SSHセッションからログアウトした後もコマンドを実行し続ける4つの方法

  2. Bashが実行されているTtyを取得する方法は?

  3. updatedb データベースはどこにありますか?