0
我有一個文件.DAT這種格式awk中殼腳本
#id|firstName|lastName|gender|birthday|creationDate|locationIP|browserUsed
933|Mahinda|Perera|male|1989-12-03|2010-03-17T13:32:10.447+0000|192.248.2.123|Firefox
1129|Carmen|Lepland|female|1984-02-18|2010-02-28T04:39:58.781+0000|81.25.252.111|Internet Explorer
,我想替換的柱(柱的數量從用戶給出與命令./tool.sh -f <file> --edit <id> <column> <value>
)與值(值從給定使用相同的命令的用戶),我不能插入內AWK <column>
參數
#!/bin/bash
if [ "$1"="-f" ] ; then
if [ "$3"="--edit" ] ; then
y=$6
x="$"$5
awk -F '|' ' '$4'==$1{$x-=$y;print }' <$2
fi
fi
我想是這樣的,當用戶給這個命令
./file.sh -f file --edit 933 3 spyros
(比以前的值爲 「佩雷拉」 更改爲「斯皮羅斯·第三場)
933|Mahinda|spyros|male|1989-12-03|2010-03-17T13:32:10.447+0000|192.248.2.123|Firefox
你的awk腳本應該做什麼很不清楚。您似乎將shell語法與awk語法和awk字段與shell位置參數和/或變量混合在一起。和idk爲什麼你有一個' - ='在那裏根據你的描述。編輯您的問題以提供更好的解釋,您想要執行的操作的示例,以及給出您發佈的示例輸入的預期輸出。 –
您應該向我們展示腳本的示例調用。例如,你討論'./tool.sh -f --edit',但是''edit'變成了'$ 2',但是你在'$ 3'中測試它。它看起來好像你從$ 2重定向,所以大概你的意思是'./tool.sh -f filename --edit ...',但是它並不完全清楚你在第4,5和6章中的期望。你應該可能使用'-v'將值傳遞給shell中的'awk'。 –
我編輯我的問題與預期的輸出 –