Unix는 마지막 필드를 얻습니다.

Unix는 마지막 필드를 얻습니다.

마지막 필드가 있는 파일에서 여러 필드를 추출해야 하는 요구 사항이 있습니다. 파일의 구조가 다를 수 있으므로 마지막 필드를 하드코딩할 수 없습니다. 서로 다른 두 파일의 예를 들어보겠습니다.

파일 1

a,b,c
d,e,f

다른 파일 File2

a,a,a,a
b,b,b,b

요구 사항은 파일 1에서 첫 번째 및 마지막 필드를 추출하는 것과 같을 수도 있고, 요구 사항은 파일 2에서 두 번째 및 마지막 필드를 추출하는 것과 같을 수도 있습니다.

추출할 필드가 언급되어 있지만 마지막 필드가 공통인 구성 테이블에서 이 요구 사항을 얻습니다. 한 가지 방법은 while 루프를 사용하는 것입니다. 그런데 while 루프 없이 이를 달성할 수 있는 방법이 있습니까?

답변1

awk를 사용하세요:

awk -F, '{print $1,$NF}' file

답변2

다음 두 가지 예를 통해 올바른 방향으로 나아갈 수 있습니다.

echo {a..z} | awk '{print $1" "$NF}'

a=1; b=5; echo {a..z} | awk -v a=$a -v b=$b '{print $a" "$b}'

귀하의 경우 사용법은 다음과 같습니다.

awk <options> myFile
  • awk $n변수는 입력 라인의 n번째 필드입니다.
  • NF필드 수인 경우 $NF행의 마지막 필드입니다.
  • 를 사용하여 입력 필드 구분 기호를 지정할 수도 있습니다 -F<character>. 여기에서는 다음과 같습니다:-F,

답변3

낮은 수준소프트웨어 도구bash, paste및 사용 cut하는 방법 rev:

paste -d, <(cut -d, -f1 File1) <(rev File1 | cut -d, -f1 | rev)

산출:

a,c
d,f

참고: 지정되지 않은 콘텐츠는 추출할 수 없으므로 이를 rev위해서는cut마지막기둥. 하지만 cut언제든지 추출할 수 있습니다.첫 번째칼럼이 rev제공됩니다.

관련 정보