我如何在 awk 中使用 cut 和 sed?
How can i use cut and sed in awk?
首先
我是新来的,我想知道如何在 awk 中使用 cut 和 sed任何编辑我的测试数据以将该数据保存到数组的方法
这是我的示例数据:
isdat pts/0 10.80.24.3 Fri Sep 20 10:20:30 2019 - Fri Sep 20 11:55:51 2019 (01:35)
通常我可以选择usage_time awk '{print }'
会是这样
输出:(01:35)
我会减少 cut -d ':' -f1 | sed -e 's/(/ /'
小时
这分钟 cut -d ':' -f2 | sed -e 's/)/ /'
但 cut 和 sed 不能在 awk 中使用 我该如何解决这个问题
你不使用它们。 Awk 完全有能力自行处理:
$ awk '
~/^pts/ { # the grep part
split(,a,/:/) # split by :
for(i in a) # process all parts (2)
gsub(/[()]/,"",a[i]) # remove parentheses
print a[1],a[2] # output both parts
}' file
输出:
01 35
James 给你一个很好的回答。使用最后一个字段(例如 $NF
)的另一个细微变化可以是:
awk '{sub(/:/," ",$NF); print substr($NF,2,length($NF)-2)}' file
您只需将 ':'
替换为 ' '
,然后取 (..)
.
之间的子字符串
结果
将您的输入通过管道传递给上面的表达式(并删除 file
)会导致:
01 35
用awk
.
剥猫的方法总是不止一种
根据评论,如果您只想将输出限制为第二个字段以 pts
开头,那么您可以这样做:
awk '~/^pts/{sub(/:/," ",$NF); print substr($NF,2,length($NF)-2)}' file
没有魔法。
首先 我是新来的,我想知道如何在 awk 中使用 cut 和 sed任何编辑我的测试数据以将该数据保存到数组的方法
这是我的示例数据:
isdat pts/0 10.80.24.3 Fri Sep 20 10:20:30 2019 - Fri Sep 20 11:55:51 2019 (01:35)
通常我可以选择usage_time awk '{print }'
会是这样
输出:(01:35)
我会减少 cut -d ':' -f1 | sed -e 's/(/ /'
小时
这分钟 cut -d ':' -f2 | sed -e 's/)/ /'
但 cut 和 sed 不能在 awk 中使用 我该如何解决这个问题
你不使用它们。 Awk 完全有能力自行处理:
$ awk '
~/^pts/ { # the grep part
split(,a,/:/) # split by :
for(i in a) # process all parts (2)
gsub(/[()]/,"",a[i]) # remove parentheses
print a[1],a[2] # output both parts
}' file
输出:
01 35
James 给你一个很好的回答。使用最后一个字段(例如 $NF
)的另一个细微变化可以是:
awk '{sub(/:/," ",$NF); print substr($NF,2,length($NF)-2)}' file
您只需将 ':'
替换为 ' '
,然后取 (..)
.
结果
将您的输入通过管道传递给上面的表达式(并删除 file
)会导致:
01 35
用awk
.
根据评论,如果您只想将输出限制为第二个字段以 pts
开头,那么您可以这样做:
awk '~/^pts/{sub(/:/," ",$NF); print substr($NF,2,length($NF)-2)}' file
没有魔法。