![awk 줄 검색 및 단어 바꾸기가 제대로 작동하지 않습니다.](https://linux55.com/image/94599/awk%20%EC%A4%84%20%EA%B2%80%EC%83%89%20%EB%B0%8F%20%EB%8B%A8%EC%96%B4%20%EB%B0%94%EA%BE%B8%EA%B8%B0%EA%B0%80%20%EC%A0%9C%EB%8C%80%EB%A1%9C%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
$ 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
변경됩니다 . - 다음 모드 인쇄 필드