12

したがって、日付を別の形式に変換する必要があります。bashパイプラインを使用して、最後のコンソールログインから日付を取得し、次のようにawkを使用して関連するビットを引き出します。

last $USER | grep console | head -1 | awk '{print $4, $5}'

どの出力:(Aug 08 この場合、$ 4 = Aug $ 5 = 08)

ここで、「Aug 08」をコマンドに入れてdate、形式を数値の日付に変更したいと思います。

これは次のようになります。

date -j -f %b\ %d Aug\ 08 +%m-%d

出力:08-08

私が持っている質問は、それをパイプラインに追加し、awk変数$4と$5を使用する方法です。ここで、「Aug08」はそのdateコマンドにありますか?

4

4 に答える 4

16

コマンド置換を使用する必要があります。

date ... $(last $USER | ... | awk '...') ...

Bashは、内部のコマンド/パイプラインを評価し$(...)、結果をそこに配置します。

于 2010-08-10T18:54:44.163 に答える
5

電話をawkかけるdate

... | awk '{system("date -j -f %b\ %d \"" $4 $5 "\" +%b-%d")}'

または、プロセス置換を使用して、以下から出力を取得しますawk

date -j -f %b\ %d "$(... | awk '{print $4, $5}')" +%b-%d
于 2010-08-10T19:04:00.007 に答える
0

バックティックを使用すると、長いパイプラインの出力を最新の状態にすることができます。

日付-j-f%b \%d\`最後の$USER| grepコンソール| ヘッド-1| awk'{print $ 4、$ 5}' \ `+%b-%d
于 2010-08-10T18:57:13.180 に答える
-1

あなたはすでにこれを試したと思いますか?

last $USER | grep console | head -1 | awk | date -j -f %b\ %d $4 $5 +%b-%d
于 2010-08-10T18:54:54.760 に答える