【发布时间】:2017-02-02 21:37:41
【问题描述】:
我有一个由数据行组成的文件,其中的列由给定的分隔符指定。
例如
20170202,ABC,USD,USD,100,20170202
20170202,ABC,GBP,USD,200,20170202
20170201,ABC,NOK,USD,300,20170204
20170131,ABC,DKK,USD,400,20170202
我想要一种打印此文件行的方法,例如,第 1 列是 20170202,第 4 列是美元。同时,我想用转义字符包围打印输出中的这些列,以向用户突出显示它们。
所以在上面的例子中,应该只打印第 1 行和第 2 行,并且:
- 应突出显示第 1 列(但不是第 6 列)
- 应突出显示第 4 列(但不是第 3 列)
目前我有一个链式 grep 用于传递的每个参数。
例如
cat myfile.txt | grep -w "20170202" | grep -w "USD"
然后将其通过管道传输到 sed 语句,该语句使用转义字符填充 20170202 和 USD 以着色输出。
但是,在上面的示例中,第 4 行将失败,因为它将被错误地输出,第 4 列和第 6 列突出显示。第 1 行也失败,第 1、3、4 和 6 列将突出显示(当我只需要 1 和 4 时)。
谁能建议如何为任意选择的列执行此操作?
包括 awk,因为我认为解决方案可能涉及到它。
【问题讨论】: