0

ここで私の構文の何が問題になっていますか?

awk -F '|' 'sub/\s*\w*/,"Visit our website!","$3"' merchant_report

回ると思われる

|bob|jones| blagblag| texas
|tom|markus| | alabama

の中へ

|bob|jones|Visit our website!| texas
|tom|markus| | alabama
4

2 に答える 2

1

この行はあなたが望むことをするかもしれません:

awk -F'|' -v OFS="|" 'NR==1{$4="Visit our website!"}1' file

あなたのawkコードで:

  • フィールドを分離する必要がありました。関数FSは必要ありません。直接sub設定するだけです。$3
  • 関数を使用してもsub( )、構文が正しくありません。あなたは詳細情報を得ることができますman gawk
  • 実際にはありませ$3$4。あなたの行がで始まるので|
  • 最初の行だけを変更したい場合は、追加する必要があります。NR==1そうしないと、awk がすべての行で変更を行います。

コードの例:

kent$  cat file
    |bob|jones| blagblag| texas
    |tom|markus| | alabama

kent$  awk -F'|' -v OFS="|" 'NR==1{$4="Visit our website!"}1' file
    |bob|jones|Visit our website!| texas
    |tom|markus| | alabama
于 2013-04-30T16:15:00.263 に答える
0

ではawk、フィールドに特定の行の新しい値を割り当てるだけです。置換アプローチに慣れている場合は、次を試してくださいsed

sed '1s/|[^|]*/|Visit our website!/3' file
|bob|jones|Visit our website!| texas
|tom|markus| | alabama
于 2013-04-30T16:18:47.267 に答える