내보내기 명령은 특정 줄을 출력하여 CSV 파일에 저장합니다.

내보내기 명령은 특정 줄을 출력하여 CSV 파일에 저장합니다.

특정 행을 검색하여 CSV 파일에 넣는 방법을 도와주실 수 있나요? Bash 및 Python3을 통해 출력을 처리하는 방법은 무엇입니까?

논평:

"objectID"는 발견된 각 서버를 나타냅니다.

서버당 "경로 인스턴스" 그룹이 2개 이상 있을 수 있습니다.

약간의 설명을 부탁드리겠습니다.

명령 출력의 예:

고양이/tmp/output.log

  objectID=HSDOMAIN.HM700.212040.9.9
  portID=9
  portName=CL3-C
  domainID=9
  hostMode=Windows Extension
  hostModeOption=7;40;73
  displayName=CL3-C-9
  domainType=0
  nickname=CLSRV129
  resourcePartitionUnitID=0
  List of 10 Path elements:
    An instance of Path
      objectID=PATH.HM700.212040.9.9.12573
      devNum=12,573
      displayDevNum=00:31:1D
      portID=9
      portName=CL3-C
      domainID=9
      scsiID=15
      LUN=3
      wwnSecurityValidity=true
    An instance of Path
      objectID=PATH.HM700.212040.9.9.4413
      devNum=4,413
      displayDevNum=00:11:3D
      portID=9
      portName=CL3-C
      domainID=9
      scsiID=15
      LUN=8
      wwnSecurityValidity=true

CSV 파일 요약:

고양이/tmp/output.csv

212040;CLSRV129;CL3-C;31:1D
212040;CLSRV129;CL3-C;11:3D

답변1

sed와 Miller를 사용하십시오(https://github.com/johnkerl/miller) 그리고 실행

sed -r 's/(.+object.+)/\n\1/g' input_01.csv | \
mlr --x2c --ips "=" clean-whitespace \
then cut -o -f objectID,nickname,portName,displayDevNum  \
then unsparsify \
then put -S '$objectID=regextract_or_else($objectID,"[0-9]{6}","")' \
then fill-down -f nickname \
then filter -x -S '$displayDevNum==""'

당신은 할 것

objectID,nickname,portName,displayDevNum
212040,CLSRV129,CL3-C,00:31:1D
212040,CLSRV129,CL3-C,00:11:3D

관련 정보