파일을 구문 분석하고 awk를 사용하여 첫 번째와 세 번째 필드를 가져오고 있습니다.
이것은 모두 훌륭하지만 첫 번째 필드에서 문자열의 마지막 4자를 제거하고 싶습니다. 지금까지 awk에서 이를 수행하는 방법을 찾지 못했습니다. 유일한 방법은 여러 번 호출하는 것입니다. 그래서 awk 출력을 2개의 변수에 저장한 다음 첫 번째 문자열을 자릅니다.
더 효율적인 방법이 있나요? 파일의 모양은 다음과 같습니다
abcdefghi.234,12345,xyz
riosadsef.543,19432,eis
baifafsag.342,01934,eod
이것이 내가 루프에서 실행 중인 것입니다.
echo $output | awk -F, "{print $1, $3}"
이렇게 하면 줄이 올바르게 인쇄되지만 $1을 잘라내어 마지막 4자를 제거하고 싶습니다.
답변1
한 가지 방법은 awk의 기능을 사용하는 것입니다 substr
. 예를 들어 다음 입력으로 시작합니다.
$ cat input
abcdefghi.234,12345,xyz
riosadsef.543,19432,eis
baifafsag.342,01934,eod
첫 번째와 세 번째 열을 인쇄하고 첫 번째 열의 마지막 4개 문자를 생략할 수 있습니다.
$ awk -F, '{print substr($1, 1, length($1)-4), $3}' input
abcdefghi xyz
riosadsef eis
baifafsag eod