[英]reading data from a file using bash and getting sum for some columns with awk
[英]Reading data from a file using awk
我是shell脚本开发的新手,我正尝试从txt文件读取数据,该文件的格式如下。
A: 1, 2, 3, 4
B: 1,2; 3, 4
这是我的代码:
awk -F':/,/;/ ' '{ echo $2 $3 $4 $5 $5 }' -f 'testread.txt'
我只需要文本文件中的数字。 谢谢。
最简单的方法可能只是使字段分隔符“ 不是数字的任何内容 ”。
[ghoti@pc ~]$ cat input.txt
A: 1, 2, 3, 4
B: 1,2; 3, 4
[ghoti@pc ~]$ awk -F'[^0-9]+' '{$1=$1; print;}' input.txt
1 2 3 4
1 2 3 4
[ghoti@pc ~]$
$1=$1
位只是强制awk使用默认输出字段分隔符重写$0
。
更新:
更明确的输出:
[ghoti@pc ~]$ awk -F'[^0-9]+' '{printf("1=%s 2=%s 3=%s 4=%s 5=%s\n", $1, $2, $3, $4, $5);}' input.txt
1= 2=1 3=2 4=3 5=4
1= 2=1 3=2 4=3 5=4
[ghoti@pc ~]$
您的命令有几个问题。
-F
选项的参数是一个正则表达式,用于指定所需的分隔符。 要选择冒号,逗号或分号作为分隔符,您需要使用竖线而不是斜杠。 或者,您可以使用方括号表达式。
用于输出文本的AWK语句是print
,而不是echo
。
-f
选项用于指定包含AWK程序的文件,而不是输入文件。 您不需要-f
来指定输入文件。
您想要更多类似这样的东西:
awk -F '[:,;]' '{ print $2 $3 $4 $5 }' testread.txt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.