我有一个 bash 问题(使用 awk
时)。我正在提取文本文件中第一列和第五列的每个实例,并使用以下代码将其通过管道传输到新文件,
cut -f4 test170201.rawtxt | awk '/stream_0/ { print $1, $5 }' > testLogFile.txt
这是我从 Timestamp
和 Loss
列中提取数据的文件 (test170201.rawtxt) 的一部分,
Timestamp Stream Status Seq Loss Bytes Delay
17/02/01.10:58:25.212577 stream_0 OK 80281 0 1000 38473
17/02/01.10:58:25.213401 stream_0 OK 80282 0 1000 38472
17/02/01.10:58:25.215560 stream_0 OK 80283 0 1000 38473
17/02/01.10:58:25.216645 stream_0 OK 80284 0 1000 38472
这是我在 testLogFile.txt 中得到的结果
17/02/01.10:58:25.212577 0
17/02/01.10:58:25.213401 0
17/02/01.10:58:25.215560 0
17/02/01.10:58:25.216645 0
我想去掉 "/"
、":"
和 "."
。我想要的结果输出如下所示:
170201 105825 212577 0
170201 105825 213401 0
170201 105825 215560 0
170201 105825 216645 0
我的问题是,如何修改我的代码以获得上述结果?我使用的平台是Debian GNU/Linux,GNU awk版本是4.0.1
最佳答案
您可以使用 awk gsub()
(global substitute) function到:
- 用空格替换
.
- 删除
:
和/
cut -f4 test170201.rawtxt | awk '/stream_0/ {
gsub(/\./," ",$1)
gsub(/[:\/]/, "", $1)
print $1, $5
}' > testLogFile.txt
事实上,cut
似乎是多余的 - 这将满足您对示例数据的要求:
awk '/stream_0/ {
gsub(/\./," ",$1)
gsub(/[:\/]/, "", $1)
print $1 , $5
}' test170201.rawtxt > testLogFile.txt
关于linux - 在 bash (awk) 中导入新文件时删除点和斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42075300/