我如何組織命令來列印結果,如下所示:
USER | PACKAGE | CREATOR
result - result - result
result - result - result
result - result - result
我想從文件中取得這些結果:/usr/local/users/*/user.conf
有多個不同使用者的文件,例如:
/usr/local/users/user1/user.conf
/usr/local/users/user2/user.conf
/usr/local/users/user3/user.conf
...
我使用通配符,因為文件很多,所以我需要在表格中組織顯示。
他就是這樣得到內容的。
username=test
package=basic
creator=admin
我嘗試了這種方式,只是為了嘗試獲取變量,但我不知道如何補充該命令。
grep package /usr/local/users/*/user.conf
答案1
另一種變體:
awk -F'=' '
BEGIN{ print "USER | PACKAGE | CREATOR" }
$1=="username" || $1=="package" || $1=="creator"{
printf $2 (++cnt%3 ? " - " : RS)
}
' /usr/local/users/*/user.conf | column -t
編輯
這將按包對錶進行排序,並允許文件中三個元素的順序不同user.conf
:
{
echo "USER | PACKAGE | CREATOR"
awk -F'=' '
$1=="username"{ a[0]=$2 }
$1=="package" { a[1]=$2 }
$1=="creator" { a[2]=$2 }
0 in a && 1 in a && 2 in a{
print a[0] " - " a[1] " - " a[2]
delete a
}
' /usr/local/users/*/user.conf | sort -k3,3
} | column -t
答案2
給定
$ head user?.conf
==> user1.conf <==
username=test1
package=basic1
creator=admin1
==> user2.conf <==
username=test2
package=basic2
creator=admin2
==> user3.conf <==
username=test3
package=basic3
creator=admin3
然後使用磨坊主
$ mlr --ixtab --ips = --opprint cat user?.conf
username package creator
test1 basic1 admin1
test2 basic2 admin2
test3 basic3 admin3
如果您還想更改欄位名稱,那麼
$ mlr --ixtab --ips = --opprint rename "username,USER,package,PACKAGE,creator,CREATOR" then cat user?.conf
USER PACKAGE CREATOR
test1 basic1 admin1
test2 basic2 admin2
test3 basic3 admin3