awk 명령의 별칭을 성공적으로 지정하면 이제 OFS가 사용되지 않습니다.

awk 명령의 별칭을 성공적으로 지정하면 이제 OFS가 사용되지 않습니다.

그래서 마침내 내가 원하는 특정 파일에서 정보를 가져오고 grep하는 명령을 얻을 수 있게 되었고, 그런 다음 별칭 문제가 발생했습니다.

find ./ -type f -name filename.ext  -exec grep 'information' {} + | sort | awk -v OFS='\n' '{print $5, $1, $2, $3 }'

거기에서 조회 후 별칭을 변경해야 한다는 것을 알았으므로 다음과 같이 했습니다.

find ./ -type f -name filename.ext  -exec grep 'information' {} + | sort | awk -v OFS='\n' '{print \$5, \$1, \$2, \$3 }'

이제 인쇄되지만 여전히 OFS를 사용하고 싶지만 OFS를 로드하는 구문이 확실하지 않습니다. 미리 감사드립니다!

 alias aliascommand="find ./ -type f -name filename.ext  -exec grep 'information' {} + | sort | awk -v \OFS='\t' '{print \$5 \$1 \$2 \$3 }'"

위의 변형을 별칭에 넣었습니다.

답변1

이렇게 하면:

alias foo="...'{print $5 $1 $2 $3 }'"

별칭을 설정하면 위치 매개변수가 확장됩니다. 결국, 그들은 큰따옴표로 묶인 문자열 안에 있습니다. 이를 원하지 않으므로 백슬래시를 사용하여 이스케이프 처리해야 합니다. 또는 전체 별칭 텍스트를 작은따옴표로 묶을 수도 있지만 별칭 내에서 작은따옴표를 사용하려고 하므로 이는 매우 어렵습니다.

\n그러나 큰따옴표 안에는 괜찮습니다.

어쨌든 대신 함수를 사용해야 할 것입니다. 이렇게 하면 명령에 대한 추가 참조를 생각할 필요가 없습니다.

mycommand() {
    find ./ -type f -name filename.ext -exec grep 'information' {} + |
       sort |
       awk -v OFS='\n' '{print $5, $1, $2, $3 }'
}

관련 정보