Bash

不能在別名命令鏈中使用 awk

  • October 23, 2021

我想將此命令鏈添加到別名中以獲得速記:

tail -10000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -10

但是,作為別名,它不能正常工作:

alias ttn="tail -10000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -10"

我嘗試使用單引號而不是雙引號,或者\在 awk 的引號之前使用轉義字元,但沒有任何效果。所以感謝你的幫助。

按照要求:

這是函式優於別名的原因之一:您可以避免引用地獄。

ttn() { tail -10000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -10; } 

或者,更易讀

ttn() { 
   tail -10000 /var/log/nginx/access.log | 
     awk '{print $1}' | 
     sort | 
     uniq -c | 
     sort -nr | 
     head -10
} 

或者,另一種多線樣式:

ttn() { 
   tail -10000 /var/log/nginx/access.log \
   | awk '{print $1}' \
   | sort \
   | uniq -c \
   | sort -nr \
   | head -10
} 

引用自:https://unix.stackexchange.com/questions/674364