我是AWK的新手。 你能告诉我如何使用awk从文件中读取一行吗?如何使用读取行中的子字符串函数获取值并将其存储到变量中?例如,这里是数据集:
01 001 410070300186169 359829047319420
01 002 410070234186169 359829043245420
01 001 410070234186169 359829047319420
我想检查位置4到6,值是否为“001”,然后将数据写入文件file_1,如果值为“002”,则将数据写入文件file_2。
答案 0 :(得分:2)
你走了;你可以将这一切都放在一行,但为了便于阅读,我将其分解为多个:
awk '$2=="001" {print > "file_1"}
$2=="002" {print > "file_2"}' input_file
<强>解释强>
awk
默认情况下使用空格和制表符将每行分隔为字段作为分隔符,因此对于每行读取,第二列中的值将保存在$2
$2=="001" {print > "file_1"}
:如果$2
为001
,请将整行打印到file_1
$2=="002" {print > "file_2"}
:同样适用于002
答案 1 :(得分:1)
你可以在awk 1班轮中做到这一切:
awk '$2 == "001" {print > "file_1"} $2 == "002" {print > "file_2"}' infile
答案 2 :(得分:0)
你可以用
读入$ 0getline <file
然后你可以使用
substr($0, 1 , 5)
从索引1开始获取$ 0的子字符串,长度为5