$ cat test.txt
#Instance|job_or_Box_name|Status | to_be_checked_for_T_or_F|Time_to_check|DaysTo_be_checked|Timezone |already_checked|Mail mesasge
P51|EAMDEUEQTTAQPOSTRTSAVE_Box|SU|T|0500|12345|BST|N|MDS price for pcb
P51|EAMDEUEQTTAQPOSTRTSAVE_Box|SU|T|0600|123|BST|N| BW RTB Enterprise Services
私はこのような出力を得たい
#Instance|job_or_Box_name|Status | to_be_checked_for_T_or_F|Time_to_check|DaysTo_be_checked|Timezone |already_checked|Mail mesasge
P51|EAMDEUEQTTAQPOSTRTSAVE_Box|SU|T|0500|12345|BST|Y|MDS price for pcb
P51|EAMDEUEQTTAQPOSTRTSAVE_Box|SU|T|0600|123|BST|N|BW RTB Enterprise Services
2行目(変数)とフィールド8が変更されます。私は試した:
v="2"
line="P51|EAMDEUEQTTAQPOSTRTSAVE_Box|SU|T|0500|12345|BST|Y|MDS price for pcb"
awk -v v=$v -v v2=$line 'BEGIN { FS="|" ; OFS="|" } $0 ~ v2 {$8 = "Y" ; print $0 }' test.txt
ただし、正しく機能せずに各行の8番目の列を変換します。また試み
awk -v v=$v -v v2=$line 'BEGIN { FS="|" ; OFS="|" } /v2/ {$8 = "Y" ; print $0 }' test.txt
しかし、うまくいきません..
答え1
努力する
LINE="P51|EAMDEUEQTTAQPOSTRTSAVE_Box|SU|T|0500|12345|BST|N|"
awk -v v2="$line" 'BEGIN { FS=OFS="|" } index($0,v2) {$8 = "Y" ; } {print;}' file.txt
どこ
index($0,v2)
オンラインでフルラインフィールドを検索します。 (NR==v
行番号検索を好む場合は、次のものを置き換えることができます。)- 一致するものが見つかると
$8
変更されます。 - Next モード印刷フィールド