awk - 如何用awk小写文件的一部分?
问题描述
我有很多文件,其中包含诸如
local1 = "AAA"
private = "Filename_With_Uppercase"
我想将等号的右侧更改为仅小写。但仅适用于以 . 开头的行private
。
如果我做
gawk -F'=' '/^private/{gsub(/[-/]/, "_"); tolower($2)} 1' filename
然后它不会改变任何东西......
问题
谁能弄清楚为什么等号的右侧没有转换为小写?
解决方案
为什么等号的右侧没有转换为小写?
tolower(string)
功能确实
返回 string 的副本,字符串中的每个大写字符都替换为其对应的小写字符。非字母字符保持不变。
因此,您需要将其分配回去以获得可见的效果,$2=tolower($2)
而不是仅仅tolower($2)
将 FS 设置为 OFS 以避免替换=
为
ie
'BEGIN{FS=OFS="="}/^private/{gsub(/[-/]/, "_");$2=tolower($2)} 1'
推荐阅读
- php - 如何为一页上的多个产品设置 Php/Stripe 结帐...?
- c# - 如何使用 Rx.NET 接收回调?
- python - 指定 Windows 以使用 Anaconda Python 解释器
- python - 如何选择正确的颜色来使用 OpenCV 对图像进行阈值处理?
- nsis - 卸载 NSIS 安装程序时如何更改位图图像
- c# - 为什么尽管算术运算符有明显溢出但没有编译时错误
- ios - UIActivityIndicatorView 未显示在 iOS UIViewController 中
- php - Laravel 错误参数 1 传递给 Illuminate\Database\Connection::prepareBindings() 必须是数组类型,给定字符串,调用
- javascript - 更改事件不返回新值
- java - 有没有更简单的方法在另一个 HashMap 中的 HashMap 中创建列表?