[英]Adding new column using awk command adds the whole content to the last?
我試圖在每行中使用awk將當前日期字段追加到管道分隔的內容中。 而不是想要的,整個16列都被追加到第17(新)位置。 我試圖改變事情,但沒有幫助。 我認為有一些基本錯誤。 我可以在這里幫忙嗎?
awk ' BEGIN{FS="|";}
{
$17=$(date +"%d-%m-%Y");
printf("%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10,
$11, $12, $13, $14, $15, $16, $17);
}' /Users/temp/dispn/content3.txt | less > /Users/temp/dispn/content4.txt
輸入(16個字段):
EX122YED| Buy online |example.com/EX122YED |example.com/EX122YED.jpg|White|new|00.00|in stock|XYZ|Accessories|Accessories|Male|30-40|y|EX122YED|0.0
我的輸出
EX122YED| Buy online |example.com/EX122YED |example.com/EX122YED.jpg|White|new|00.00|in stock|XYZ|Accessories|Accessories|Male|30-40|y|EX122YED|0.0|EX122YED| Buy online |example.com/EX122YED |example.com/EX122YED.jpg|White|new|00.00|in stock|XYZ|Accessories|Accessories|Male|30-40|y|EX122YED|0.0
預期(17個字段):
EX122YED| Buy online |example.com/EX122YED |example.com/EX122YED.jpg|White|new|00.00|in stock|XYZ|Accessories|Accessories|Male|30-40|y|EX122YED|0.0|06-22-2014
我猜這里的問題是$(date +"%d-%m-%Y");
腳本中的bash
$0
被解釋為$0
因為bash
不會擴展它。 為了防止這種情況,您可以使用雙引號定義awk
腳本,如下所示:
awk "{print \$0\"|\"$(date +\"%d-%m-%Y\")}"
這需要使用各種轉義的$
和"
字符來使其起作用。
如果您不需要使用awk
但也可以使用sed
,則可以使用:
sed "s/$/|$(date +"%d-%m-%Y")/"
將日期分配給變量,然后整行打印,
awk -F'|' -v var=$(date +"%d-%m-%Y") '{print $0,var}' OFS="|"
例:
$ echo 'EX122YED| Buy online |example.com/EX122YED |example.com/EX122YED.jpg|White|new|00.00|in stock|XYZ|Accessories|Accessories|Male|30-40|y|EX122YED|0.0' | awk -F'|' -v var=$(date +"%d-%m-%Y") '{print $0,var}' OFS="|"
EX122YED| Buy online |example.com/EX122YED |example.com/EX122YED.jpg|White|new|00.00|in stock|XYZ|Accessories|Accessories|Male|30-40|y|EX122YED|0.0|22-06-2014
如果要使用month-date-year
格式,則將date
命令更改為date +"%m-%d-%Y"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.