繁体   English   中英

使用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 ~]$ 

您的命令有几个问题。

  1. -F选项的参数是一个正则表达式,用于指定所需的分隔符。 要选择冒号,逗号或分号作为分隔符,您需要使用竖线而不是斜杠。 或者,您可以使用方括号表达式。

  2. 用于输出文本的AWK语句是print ,而不是echo

  3. -f选项用于指定包含AWK程序的文件,而不是输入文件。 您不需要-f来指定输入文件。

您想要更多类似这样的东西:

awk -F '[:,;]' '{ print $2 $3 $4 $5 }' testread.txt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM