如何从一个输入中选择多行并将它们一次保存到不同的文件中?

如何从一个输入中选择多行并将它们一次保存到不同的文件中?

我需要处理来自标准输出的大量数据,但我只需要其中的几行。

假设我想将以 开头的行中的一些数据附加Label 3到文件中F3.csv,并将以 开头的行中的一些数据附加Label 5到文件中F5.csv

输入示例 - 来自 STDOUT

Label 1 25
Label 2 60
Label 3 70
Label 4 95
Label 5 100

输出

附加70F3.csv100F5.csv.

我想知道是否可以这样做,如果可以,那么如何做。

你知道有什么办法吗?

答案1

使用 Awk 可以很容易地做到这一点:

awk '/Label 3/ { print $3 >>"F3.csv" } /Label 5/ { print $3>>"F5.csv" }'

这会附加以以下开头的行的值标签3标签5到文件F3.csvF5.csv相应地。

这也可以写得更紧凑一些:

awk '/Label 3|Label 5/ { print $3 >> "F"$2".csv"}'

使用可以从标签后缀推断出目标文件名的事实

(谢谢@don_crissti!)

答案2

尝试这个 -

#sed -e '/Label\ 3/w F3.csv' -e '/Label\ 5/w F5.csv' sed.txt
Label 1 25
Label 2 60
Label 3 70
Label 4 95
Label 5 100
#head F?.csv
==> F3.csv <==
Label 3 70

==> F5.csv <==
Label 5 100

相关内容