我已經嘗試了幾種在AWK命令中獲得$ 2到$ 11之間空格的方法,但沒有任何快樂。我猜這是一個printf解決方案,但我無法實現它的工作。Unix Bash:如何使用AWK命令在列之間獲取製表符?
FILE* fp = popen("ps -U root -u root u | awk \"{ print \\$2, \\$11 }\"", "r");
我已經嘗試了幾種在AWK命令中獲得$ 2到$ 11之間空格的方法,但沒有任何快樂。我猜這是一個printf解決方案,但我無法實現它的工作。Unix Bash:如何使用AWK命令在列之間獲取製表符?
FILE* fp = popen("ps -U root -u root u | awk \"{ print \\$2, \\$11 }\"", "r");
可以設置OFS
變量,默認情況下是一個空間,製表符(\t
):
FILE* fp = popen("ps -U root -u root u | awk 'BEGIN { OFS=\"\\t\" } { print $2, $11 }'", "r");
我改變了你的榜樣引號也一樣,當我測試它在我的終端,它的工作這樣一輪(AWK命令在' '
,OFS
在" "
)
我刪除的$
符號你逃跑,因爲我不薄K表他們需要
使用您的命令:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char buffer[256];
FILE* fp = popen("ps -U root -u root u | awk 'BEGIN { OFS=\"\\t\" } { print $2, $11 }'", "r");
while (fgets(buffer, 256, fp)) {
printf("%s", buffer);
}
return 0;
}
將系統調用給什麼樂趣呢?你不能在C中做同樣的事嗎? – devnull