bash - 如何在管道分隔的字段周围添加双引号 ("")
问题描述
假设我有一个具有这种结构的文件:
1|2|3|4|
5|6|7|8|
9|10|11|12|
但是,我希望我的文件看起来像这样(预期输出):
"1"|"2"|"3"|"4"|
"5"|"6"|"7"|"8"|
"9"|"10"|"11"|"12"|
我正在尝试sed
通过以下方式使用命令:
sed 's/^/"/g'
不幸的是,它只在每行的开头添加引号:
"1|2|3|4|
"5|6|7|8|
"9|10|11|12|
解决方案
^
意思是“一行的开始”。改用[^|]
它的意思是“除了|
”。如果您的 sed 实现支持+
,您可以使用
sed -E 's/[^|]+/"&"/g'
否则,您需要更详细
sed 's/[^|][^|]*/"&"/g'
&
表示匹配的部分。
推荐阅读
- android - 难以使用矢量绘图创建自定义形状
- php - 动态输入未记录在数组 PHP 中
- windows-10 - 带有重定向到 HTML 的 Wifi 热点
- json - ReactJS 使用 JSON Schema 验证 JSON 对象
- python - 多个 Csv 到 json,没有重复的子元素
- ios - 如何根据同一节 Swift 4 中的数组更改 UITableViewCell 颜色
- elm - `Msg` 类型如何在 Elm 中分成多种类型?
- swift - Xcode Autocomplete 不适用于特定项目,但适用于其他项目
- sql - 根据另一列计算一列并在不同的表中显示计数
- c# - 在单独的 GridViews C# Asp.Net 中显示 DataTable 数据