bash - bash 解析空格分隔的文本文件
问题描述
示例文件
aaa [bbb bb] ccc "ddd dd" eee
bbb [ccc cc] ddd "eee ee" fff
预期的:
line1
s1="aaa", s2="bbb bb", s3="ccc", s4="ddd dd", s5="eee"
line2
s1="bbb", s2="ccc cc", s3="ddd", s5="eee ee", s5="fff"
提前致谢!
解决方案
使用gnu awk
你可以使用这个:
awk -v OFS=", " -v FPAT='\\[[^]]*\\]|"[^"]*"|[^[:space:]]+' '{
for (i=1; i<=NF; i++) {
gsub(/^[["]|[]"]$/, "", $i)
$i = "s" i "=\"" $i "\""
}
$0 = "line" NR ORS $0
} 1' file
输出:
line1
s1="aaa", s2="bbb bb", s3="ccc", s4="ddd dd", s5="eee"
line2
s1="bbb", s2="ccc cc", s3="ddd", s4="eee ee", s5="fff"
推荐阅读
- c++ - 如何使用单例设计模式进一步初始化静态全局变量
- python - 在numpy中翻译具有负值的排序键lambda
- assembly - 在 mips mars 组件中加倍浮动
- angular - 带下拉菜单的角垫表内联过滤器
- r - 将列中以冒号分隔的字符串拆分为 R 中的不同列
- html - Flex 包裹儿童
- android - Android - 从数据库中加载数据一次
- python - Python 无法比较最大公约数的值
- c# - 在 C# .NetCore 中使用 rest API 时未定义的值
- android - 需要有关如何在我的应用程序中获取其他 android 应用程序的详细信息的信息