簡體   English   中英

編號awk命令的輸出行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM