텍스트 파일의 조건을 기반으로 하는 쉘 스크립트 및 로봇 프레임워크 테스트 케이스 작성

텍스트 파일의 조건을 기반으로 하는 쉘 스크립트 및 로봇 프레임워크 테스트 케이스 작성

저는 로봇 프레임워크 테스트 케이스를 작업 중입니다. 내 요구 사항은 아래 파일을 읽고 위치에 따라 값을 비교하는 것입니다. 예를 들어:

  1. 3으로 시작하는 줄. 3은 ID번호인데 행 전체를 선택해서 위치에 따른 값을 비교해야 합니다. BRONYX는 위치 9에서 시작하며 위치 44의 NEW YORK 출력과 비교되어야 합니다. 이 예에서는 BRONYX를 NEWYORK으로 변경해야 합니다. 위치를 기준으로 문자열을 추출하는 방법.

3^G^G^G^GBRONX^GNY^G10457^GUSA^G^G^GBRONX는 NEW YORK으로 변경되어야 합니다. - 파생 도시 예시^G^G^G^GNEW YORK^GNY^G10457^G10457^G^GBRONX 카운티 ^G^GBRONX^G뉴욕^GUSA^G^G^G^G^G^G^G^G40.845600^G-73.898500^G325^GSPU^GZ1^G^G^G^G^G^G ^ G^뉴욕-뉴어크-저지시, NY-NJ-PA 수도권 통계 지역^G35620^GE020^GZC5X^GMMMMVVV^G36005039500

예 2: ID 2가 있는 행을 선택합니다. 이 예에서는 위치 9의 MANHATTAN이 New York(위치 40)으로 변경되어야 합니다. 2^G^G^G^GMANHATTAN^GNY^G^GUSA^G^G^GMANHATTAN은 NEW YORK으로 변경되어야 합니다. - 파생 도시 예시^G^G^G^GNEW YORK^GNY^G^G^G^GNEW 요크 ^G^G^G^구사^G^G^G^G^G^G^G^G40.783434^G-73.966249^G425^GSPU^GG3^G^G^G^G^G^G^ 지 ^G^G^G^G^GMMMMVVM^G

도울 수 있니?

답변1

각각이 ^GControl-G 문자라고 가정합니다. 즉, 파일은 \aASCII 벨 문자( )를 사용하여 구분되며 각 줄의 5번째 필드를 15번째 필드의 값으로 설정하려고 합니다.

awk -F '\a' 'BEGIN { OFS=FS } { $5 = $15 }; 1' file >newfile

이는 필드 구분 기호를 ASCII 벨 문자로 설정하는 데 사용됩니다 -F '\a'. 그런 다음 출력 필드 구분 기호를 동일한 문자로 설정하고 5번째 필드를 15번째 필드의 값으로 업데이트합니다. 코드를 후행하면 1수정된 레코드가 출력됩니다. 결과는 newfile이 예에서 호출된 파일에 기록됩니다.

첫 번째 필드 2또는 첫 번째 필드로 3시작하는 행 에만 영향을 주고 다음을 사용합니까?

awk -F '\a' 'BEGIN { OFS=FS } $1 == 2 || $1 == 3 { $5 = $15 }; 1' file >newfile

결과는 데모 목적으로만 마크다운 테이블 형식으로 지정됩니다. 4열은 e열이고 15열은 o열입니다.

두번째 이자형 에프 G 시간 제이 케이 N 아르 자형 에스 V 엑스 와이 BB CC DD FF gg 헤헤 지에지에 ㅋㅋ mm 친절 PP QQ ₩₩ 봄 여름 시즌 TT 웨이웨이 W W
뉴욕 뉴욕 10,457 미국 브롱크스는 뉴욕으로 변경되어야 합니다 - 파생 도시 예시 뉴욕 뉴욕 10,457 10,457 브롱크스 카운티 브롱크스 뉴욕 미국 40.846… -73.898… 325 SPU Z1 뉴욕-뉴어크-저지시, 뉴욕-뉴저지-펜실베니아 수도권 통계 지역 35,620 E020 ZC5X MMMMMVVV 36,005,039,500
2 뉴욕 뉴욕 미국 맨해튼은 뉴욕으로 변경되어야 합니다 - 파생 도시 예시 뉴욕 뉴욕 뉴욕 미국 40.783… -73.966… 425화 SPU G3 MMMMMVVM

답변2

SE에 오신 것을 환영합니다. 몇 가지 생각:

  • 파일을 파이프 hexdump하거나 xxd사람이 읽을 수 있는 표현을 봅니다.
  • strings파일에서 읽을 수 있는 텍스트를 추출 하는 데 사용됩니다 . 내 생각엔 이것이 당신에게 도움이 될 것 같아요.
  • cut및/또는 head더하기 기호를 사용하여 tail부분 행을 추출하거나 각각 행을 선택합니다. sed또는 awk그들은 당신의 친구가 될 수 있지만, 당신이 그것을 사용하는 방법을 배우는 경우에만 가능합니다. 몇 년이 걸립니다.

위치를 기준으로 문자열을 추출하는 방법

이 질문에 근거해서 말하기는 어렵습니다.

출력과 비교해야합니다

솔루션을 작성해 달라고 요청하시나요? 무엇을 시도해 보셨나요? 제안된 대로 읽으 셨나요 man awk? 아니면 Linux는 힌디어로 된 문서를 제공하지 않습니까?

만약에문자열은 길이가 고정되어 있으며만약에파일에는 개행 문자가 없으므로 단일 cut호출을 사용할 수 있습니다.

$ echo my long string | cut -c4-8                                                 

산출:

long

알아채다. 데이터를 더 잘 표시하려면 편집기나 마크다운 형식을 사용하세요.

답변3

먼저 모든 Ctrl+G 문자를 찾아 |(파이프) 로 바꿨습니다.

sed 's/^G/|/g' test.csv > output.csv

다음을 사용하여 전체 줄을 인쇄할 수 있습니다.

grep ^6 output.csv

6주민등록번호 입니다 .

6|LAKELINE MALL|||AUSTIN|TX||USA|||MALL EXAMPLE - POI|11066 PECAN PARK BLVD|||AUSTIN|TX|78613|78613||TRAVIS||AUSTIN|CEDAR PARK|USA||||||||30.468408|-97.803570|140|SPU|NA||||||||||||UUUUUVVM|

관련 정보