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'。 –
我编辑我的问题与预期的输出 –