[英]Numbering the output lines of an awk command
我使用awk
命令從/ etc / passwd獲取用戶列表。 現在,我想給它編號,這是我使用的命令,但是它似乎不起作用,如何使它起作用?
s=0
awk -F':' '{s+=1} END {print "USER"$s" = " $1}' /etc/passwd
我希望它輸出:
USER1 = xyz
USER2 = abc
等等
之所以只得到一條結果行,是因為您使用END
關鍵字,因此打印只匹配一行(最后一行)。
您無需在shell中設置s=0
,因為變量由awk本身處理。 就像@JonathanLeffler提到的那樣, $
在awk中選擇一個字段。 因此$s
不會被變量s
的值代替,而是被字段s
取代,其中s
是變量值。 (如果s == 2
,則將打印字段號2。)
嘗試這個:
# Start with 0 (using an extra variable s)
awk -F':' '{print "USER"s++" = " $1}' /etc/passwd
# Start with 1 (using the internal variable NR)
awk -F':' '{print "USER"NR" = " $1}' /etc/passwd
# Produce sortable output for further processing
awk -F':' '{printf "USER%04d=%s\n", NR-1, $1}' /etc/passwd
感謝評論者的更多想法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.