我需要处理来自标准输出的大量数据,但我只需要其中的几行。
假设我想将以 开头的行中的一些数据附加Label 3
到文件中F3.csv
,并将以 开头的行中的一些数据附加Label 5
到文件中F5.csv
。
输入示例 - 来自 STDOUT
Label 1 25
Label 2 60
Label 3 70
Label 4 95
Label 5 100
输出
附加70
到F3.csv
和100
到F5.csv
.
我想知道是否可以这样做,如果可以,那么如何做。
你知道有什么办法吗?
答案1
使用 Awk 可以很容易地做到这一点:
awk '/Label 3/ { print $3 >>"F3.csv" } /Label 5/ { print $3>>"F5.csv" }'
这会附加以以下开头的行的值标签3和标签5到文件F3.csv和F5.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