0

私はこのawkプログラムを実行しています:

awk -F: '{if($1=="waheed") {$2=1;print $0}}' /etc/passwd

出力は次のとおりです。

mysql 1 118 129 MySQL Server,,, /nonexistent /bin/false

セパレータなしで:、この場合セパレータ付きで行を印刷するにはどうすればよいですか?注:これは、式を記述した後に発生しました$2=1

4

2 に答える 2

1

次のようにawkコマンドを直接使用できます。

awk 'BEGIN{OFS=":"} {your code here}'

引用符の開始のすべてのコードは1回だけ実行されます

-vオプションは、パラメーターをスクリプトに変換するためのものです。お気に入り:

awk '{print $pid_doc}' -v pid_doc="$Param"

この$Paramは、シェルスクリプトから指定できます。

于 2013-01-20T03:41:26.060 に答える
1

awkでは、出力はOFS(出力フィールドseperater)変数の内容によってデフォルトでスペースで区切られます。これは、-v OFS =':'で設定できます。

awk -F : -v OFS=':' '{ cmds}' file
于 2013-01-19T19:12:12.350 に答える