$ 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
두 번째 행(변수)과 필드 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
변경됩니다 . - 다음 모드 인쇄 필드