1

我是 AWK 的新手。你能告诉我如何使用awk从文件中读取一行吗?如何使用读取行中的子字符串函数获取值并将其存储到变量中?例如这里是数据集:

01 001   410070300186169                 359829047319420
01 002   410070234186169                 359829043245420
01 001   410070234186169                 359829047319420

我想检查位置 4 到 6 的值是否为“001”,然后将数据写入文件 file_1,如果值为“002”,则将数据写入文件 file_2。

4

3 回答 3

2

干得好; 您可以将所有内容放在一行中,但为了便于阅读,我将其分解为多个:

awk '$2=="001" {print > "file_1"}
     $2=="002" {print > "file_2"}' input_file

解释:

  • awk默认情况下,使用空格和制表符作为分隔符将每一行分隔为字段,因此对于读取的每一行,第二列中的值将保存在$2
  • $2=="001" {print > "file_1"}:如果$2001,则将整行打印到file_1
  • $2=="002" {print > "file_2"}: 同样对于002
于 2012-12-11T21:11:29.483 回答
1

您可以像这样在 awk 1 班轮中完成所有这些操作:

awk '$2 == "001" {print > "file_1"} $2 == "002" {print > "file_2"}' infile
于 2012-12-11T21:10:52.690 回答
0

你可以读入 $0 与

getline <file

那么你可以使用

 substr($0, 1 , 5)

获取从索引 1 开始,长度为 5 的 $0 子字符串

于 2012-12-11T20:50:26.203 回答