我不知道如何将 numA = 设置为awk的输出,以便比较 rID numA 。替换代码3】相当于一个txt文件的第一个字段,该文件由 % 分隔。有什么建议吗?

linux
bash
ubuntu
jonathanw416
jonathanw416
发布于 2016-04-04
4 个回答
John Bollinger
John Bollinger
发布于 2016-04-04
0 人赞同

你可以通过以下方式在一个变量中捕获任何命令的输出 命令替换 :

numA=$(awk -F '%' '{print $1}' < practice.txt)

然而,除非你的文件只包含一行,否则你提出的awk命令(如上文所纠正)不太可能是你想使用的。 如果practice.txt文件包含多个问题的答案,每行一个,那么你可能要用完全不同的结构来编写脚本。

Ell
Ell
发布于 2016-04-04
0 人赞同

你不需要使用 awk ,只需要使用参数扩展。

numA=${rID%%\%*}
    
karakfa
karakfa
发布于 2016-04-04
0 人赞同

这是正确的语法。

numA=$(awk -F'%' '{print $1}' practice.txt)

然而,在awk中通过传递bash变量来进行比较会更容易。

awk -F'%' -v r="$rID" '$1==r{... do something ...}' practice.txt

由于你没有说明任何细节,所以很难提出更多建议...

要从文件中删除rID匹配行,请这样做

awk -F'%' -v r="$rID" '$1!=r' practice.txt > output

将打印满足条件(1美元不等于rID)的行,相当于删除了相等的行。 你可以通过以下方式模仿就地替换

awk ... practice.txt > temp && mv temp practice.txt

在这里,你可以从上面的一行填入......。

它基本上是一个编辑.txt文件的bash脚本。
魔鬼就在细节中。 如果你能指定一个简单的输出和预期输出,你会得到更多的帮助和更好的建议。
它每行有几个字段,这个特定的函数从practice.txt文件中删除用户指定的那一行
user6124839
user6124839
发布于 2016-04-04
0 人赞同

Try using

$ numA=`awk -F'%' '{ if($1 != $0) { print $1; exit; }}' practice.txt`

从问题中,"numA等于txt文件的第一个字段,该字段由%分隔"