linux - 如何将特定列转换为标题大小写
问题描述
我想出了这段代码:
cut -d';' -f4 columns.csv | sed 's/.*/\L&/; s/[a-z]*/\u&/g'
它实际上完成了第四列的工作,但是以我丢失其他列的方式..
我没有成功尝试:
cut -d';' -f4 columns.csv | sed -i 's/.*/\L&/; s/[a-z]*/\u&/g'
那么,如何将更改应用于文件中的特定列并保持其他列不变?
假设 columns.csv 内容是:
TEXT;more text;SoMe MoRe TeXt;THE FOURTH COLUMN;something else
那么,预期的输出应该是:
TEXT;more text;SoMe MoRe TeXt;The Fourth Column;something else
解决方案
GNU sed:
sed -ri 's/;/&\r/3;:1;s/\r([^; ]+\s*)/\L\u\1\r/;t1;s/\r//' columns.csv
更新:
sed -i 's/; */&\n/3;:1;s/\n\([^; ]\+ *\)/\L\u\1\n/;t1;s/\n//' columns.csv
将锚点\r
( \n
) 放在字段 4 的开头。我们编辑整个单词并将锚点移动到下一个单词的开头。t1
:1
只要substitution
命令中的模式匹配,就会执行按标签跳转。卸下锚。
推荐阅读
- android - 如何将我的本地图像更改为 React Native 中的文件类型?
- vega-lite - 是否可以对直方图使用构面和重复运算符?
- laravel - 如何修复“未检查的 runtime.lastError:消息端口在收到响应之前关闭”chrome 问题?
- android - 如何使 Web 图像适合 WebView 内的 Android 屏幕尺寸?在使用 JSON 数据获取网站内容时,使用 restful
- c# - Visual Stdio - 缺少 C# Gridview CellClick 动作
- java - 有什么方法可以以编程方式确定当前平台上可用的 Java 语言功能吗?
- django - 如何修复此错误 - 未找到:/firstapp/ "GET /firstapp/ HTTP/1.1" 404 2065"
- angular - Angular 材质 mat-tab-group 正在更改 textarea 模糊上的活动选项卡但未触发 selectedIndexChange?
- javascript - 如何将修改后的可排序列表从 html 传递到另一个 html?
- c# - EF Core:数据库优先转换:外键错误列