
파일을 구문 분석 중이고 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
다음을 사용하여 열 1의 마지막 4자를 생략하고 열 1과 3을 인쇄할 수 있습니다.
$ awk -F, '{print substr($1, 1, length($1)-4), $3}' input
abcdefghi xyz
riosadsef eis
baifafsag eod