함수에 대한 awk 단축키를 사용하여 열 번호를 전달한 다음 출력을 인쇄하고 싶습니다. 내 별칭은 다음과 같습니다.
alias A="| awk '{print \$1}'
alias G="| grep -i'
다음을 입력하는 대신:
ps -ef | grep mysql | awk 'print $2'
다음을 입력할 수 있기를 원합니다.
ps -ef G mysql A 2
어떤 제안이 있으십니까?
답변1
나는 이것이 불가능하다고 생각한다. 기본적으로 별칭은 인수( $1
)를 허용할 수 없으며 함수는 매크로 확장( |
)을 받을 수 없습니다.
내가 생각할 수 있는 가장 가까운 옵션은 다음과 같습니다.
또는bash
zsh
C() { col=$1; shift; eval "awkcmd='{ print \$$col }'"; echo "$awkcmd"; "$@" | awk "$awkcmd"; }
C 2 ps -ef G mysql
존재하다zsh
alias -g F="| tr -s '[[:space:]]' | cut -d ' ' -f"
ps -ef G mysql F 2
답변2
파이프를 별칭에 넣는 것은 어색합니다. 대신 콘텐츠를 파이프할 수 있는 셸 함수를 만듭니다.
G () {
grep -i "$@"
}
A () {
awk -v col="$1" '{ print $col }'
}
그 다음에,
ps -ef | G mysql | A 2
그러나 Linux 시스템에서 이 특정 파이프는 다음과 거의 동일합니다.
pgrep mysql