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