[英]Executing date utility in awk in linux bash script
我正在嘗試使用awk格式化文件中的某些文本。
要求是用表示人類可讀時間的格式化字符串,用以下格式替換表示時期的冒號分隔文件(:)的第三個字段:DD / MM / YYYY
這是一個示例文件:
abc:$3$wHe$JKAP1Ry.CAcEGhD0J7SGVl.AMg.0:1427135400:0:120:7:30::
rst:$6$3WWbfvblr6FF92R5/n3mLdlSkARgfRm1:1427293800:0:40:7:30::
xyz:$1$xuTkkle203F$df.ixcn/mcuFIO90lndn:1420478400:0:90:7:30::
def:$4$vid2003mDEOF$dc2.Rkdlkfdiw8/cib6:1389547200:0:120:7:30::
ab:*$5P1wHeEG$JKA2ya.ikol30.de/ldiv.230:1449771300:0:120:7:30::
xy:$1k3lc930vs.lskdie/sldiemDIIsdk193n:1429995693:0:50:7:30::
xyy:*$tkwsMt972w.Csrl5jr.23nsoijsleqJK:1429995889:0:120:7:30::
通過使用date將第三個字段中的值之一復制並粘貼到a命令中,我已經能夠創建所需的結果:
date -d @1427135400 +"%d/%m/%Y"
23/03/2015
這是我試圖在腳本中執行的awk命令,我一直在這里和那里對腳本進行修改,希望能使其正常工作,但是沒有運氣。 請注意,$ userFound已經從上面列出的文件中存儲了一行:
echo $userFound | awk -F':' '{
if ( $2 ~ /^\*/ ) {$2="L"} \
if ($2 ~ /^[^*]/) {$2="P"} \
cmd="date -d @"$3" +\"%d/%m/%Y\"" \
cmd | getline time \
close(cmd) \
} \
END { \
print $1":"$2":"time":"$4":"$5":"$6":"$7":"$8":"$9 \
}'
運行當前腳本,我得到以下輸出:
awk: cmd. line:5: (FILENAME=- FNR=1) fatal: expression for `|' redirection has null string value
如果您確實需要使用date
(因為您沒有GNU awk),則您的腳本可以進行一些更改,即print語句不應位於END塊中。
BEGIN {
FS = ":"
OFS = ":"
}
{
if ( $2 ~ /^\*/ ) {$2="L"}
if ($2 ~ /^[^*]/) {$2="P"}
cmd="date -d @" $3 " +\"%d/%m/%Y\""
cmd | getline time
close(cmd)
print $1, $2, time, $4, $5, $6, $7, $8, $9
}
如果將此腳本放在名為a.awk的文件中,則可以執行
awk -f a.awk foo.txt
如果foo.txt看起來像這樣:
abc:$3$wHe$JKAP1Ry.CAcEGhD0J7SGVl.AMg.0:1427135400:0:120:7:30::
rst:$6$3WWbfvblr6FF92R5/n3mLdlSkARgfRm1:1427293800:0:40:7:30::
xyz:$1$xuTkkle203F$df.ixcn/mcuFIO90lndn:1420478400:0:90:7:30::
def:$4$vid2003mDEOF$dc2.Rkdlkfdiw8/cib6:1389547200:0:120:7:30::
ab:*$5P1wHeEG$JKA2ya.ikol30.de/ldiv.230:1449771300:0:120:7:30::
xy:$1k3lc930vs.lskdie/sldiemDIIsdk193n:1429995693:0:50:7:30::
xyy:*$tkwsMt972w.Csrl5jr.23nsoijsleqJK:1429995889:0:120:7:30::
然后是輸出:
abc:P:23/03/2015:0:120:7:30::
rst:P:25/03/2015:0:40:7:30::
xyz:P:05/01/2015:0:90:7:30::
def:P:12/01/2014:0:120:7:30::
ab:P:10/12/2015:0:120:7:30::
xy:P:25/04/2015:0:50:7:30::
xyy:P:25/04/2015:0:120:7:30::
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.