2016-05-06 32 views
0

早上好。首先要做的事情:我几乎不知道Unix中的shell脚本,所以请原谅我的天真。.ksh将用户输入值粘贴到数据集中

这是我想要做的,我认为它相对简单:我想创建一个.ksh文件来做两件事:1)获取用户提供的数值(参数)并粘贴它放到数据集(一个单独的.txt文件)末尾的新列中,并且2)执行一个不同的.ksh脚本。

我设想在Unix提示符下调用这个脚本,并在其后添加输入值。例如,“paste_and_run.ksh 58”,其中58将在现有数据集中填充新的最终(未预留)列(具体地,它将填充第77列)。

坦率地说,我甚至不知道从哪里开始,所以任何输入都会非常感激。对于问题中缺少代码抱歉。请让我知道,如果我可以提供更多的细节,并感谢您看看。

回答

0

我找到了答案:“nawk”命令。

TheNumber=$3 
PE_Infile=$1 

其中上述变量分别对应于命令行中的第三个参数和第一个参数。 “PE_Infile”表示要操纵的文件(具有完整路径),“TheNumber”表示要填充最后一列的编号。然后:

nawk -F"|" -v TheNewNumber=$TheNumber '{print $0 "|" TheNewNumber/10000}' $PE_Infile > $BinFolder/Temp_Input.txt 

这里,-F“|”指示分隔符,-v指示要添加的内容。由于我自己不知道的原因,为了在打印语句中执行算术操作,需要声明一个新变量(TheNeNNumber)。打印$ 0意味着整行将被打印,同时添加“|”符号和命令行输入的值除以10000来结束。最后,我们有输入文件和一个输出文件(Temp_PE_Input.txt,在由$ Binfolder变量表示的路径中)。

后来运行所需的脚本是作为打字脚本名称(与路径),和将对应的参数($ 2 $ 3)之后根据需要,每个由空格分隔一样简单。