我正在尝试从文件中提取行并将输出保存到新文件。
我一直在使用以下代码:
cat datafile | awk -f pullhh.txt > fuel
文件pullhh.txt
包含代码/FUELHH/
我想提取包含该单词的行FUELHH
并将它们保存到文件中,然后还提取包含的行FUELINST
并将它们保存到单独的文件中。
有没有办法在pullhh.txt
文件中同时使用这两个命令来实现这一点?
答案1
编辑:打印到单独的文件:
/FUELHH/ {print > "fuelhh.txt"}
/FUELINST/ {print > "fuelinst.txt"}
由于pullhh.txt
它实际上是一个 awk 脚本,因此txt
扩展名具有误导性。使用类似以下内容extract_lines.awk
:
awk -f extract_lines.awk datafile
答案2
因为您想将输出转移到 2 个不同的文件,所以我建议执行以下操作(通过-f
awk 选项执行)。
BEGIN {
while (getline line < "datafile" > 0) {
if (match(line, "FUELHH")) print line > "file1"
if (match(line, "FUELINST")) print line > "file2"
}
}
更短的解决方案:
{
if (match($0, "FUELHH")) print > "file1"
if (match($0, "FUELINST")) print > "file2"
}
答案3
您所需要的只是一个行程序,不需要脚本文件:
awk '/FUELHH/{print > "fuelhh.txt"}/FUELINST/{print}' datafile > fuelinst.txt