shell - 仅更改 bash 中字符之间出现的单个空格
问题描述
我的输出如下:
NAME UUID TYPE DEVICE
Wired connection 1 e4249ef0-c4f0-3b64-8950-0c6be3edaca5 802-3-ethernet enp0s3
wireless
如果其中提到了类型,我想选择设备名称,使用awk
.
Expected output:
enp0s3
然而,一个问题。NAME
有时可以是一个单词,在这种情况下可以awk
将TYPE
and识别DEVICE
为field 3 & 4
。
awk '$3 ~ /wireless/{ print $4 }'
但是 TheNAME
有时spaces
介于两者之间,我想在应用之前先处理awk
它,否则它的行为不正常。如果我可以将单个空格更改为“-”,它就解决了我的目的。
请提出建议。
解决方案
您说要打印“设备名称”,所以我们不知道您是要打印“设备”字段还是“名称”字段,所以我们都只是猜测。这就是为什么在任何问题中都包含预期输出很重要的原因。
要打印设备字段:
awk '$(NF-1) ~ /wireless/ { print $NF }' file
要打印 NAME 字段:
awk '$(NF-1) ~ /wireless/ { sub(/([[:space:]]+[^[:space:]]+){3}[[:space:]]*$/,""); print }' file
无论您的文件在字段之间包含什么空格,只要只有 NAME 字段本身可以包含空格,它就可以工作。
推荐阅读
- c# - googlr 语音客户端 api 返回空结果
- java - 从 Angular 6 Httpclient 进行后期调用时,Java HttpServletRequest 参数为空
- linux - shm_open 是否提交固定数量的物理内存?
- python - 如何将 bs4.element.Tag 转换为 JSON 字典?
- php - 斜线和 wp_register_style
- javascript - 嵌套的 Javascript 如何返回“传递”承诺?
- c# - 有什么方法可以防止使用新 csproj 格式的 .NET 应用程序存在于 bin/debug/net472/AppName 中?
- powershell - 在 VSCode 的 PowerShell 命令提示符中隐藏完整文件路径
- python - 在 django 中加载图像时的可疑操作
- vue.js - Webpack:为什么 vue-loader 不能转译?