bash - 如何在某些特定符号后的字符之间插入空格?
问题描述
我有以下格式的文本文件:
\Hollands\\\\\\hOlAnz/hOlAns\\\\\\\\
\Hollandse\\\\\\hOlAns@\\\\\\\\
\Hollywood\\\\\\hOliwud/hOliwut/hOliwYd\\\\\\\\
...
我想让它看起来像这样⬇️:
\Hollands\\\\\\h O l A n z / h O l A n s\\\\\\\\
\Hollandse\\\\\\h O l A n s @\\\\\\\\
\Hollywood\\\\\\h O l i w u d / h O l i w u t / h O l i w Y d\\\\\\\\
我应该怎么办?提前谢谢了。
我尝试使用 sed:
sed 's/\{\\\\\\\{1\}\)/\1 /g'
正如我期望在(每个字符)\1 /
之后插入(一个空格),在 6 个重复s 之后。但得到错误说{1\}
\
RE error: invalid repetition count(s)
解决方案
sed 是对单个字符串进行简单操作的正确工具s/old/new/
,除此之外(例如,隔离字符串的一部分,然后根据需要对该字符串的某些部分进行进一步操作),只需使用 awk。
使用 GNU awk 作为第三个参数来匹配()和 gensub():
$ awk 'match($0,/(.*\\{6}.)(.*)(\\{8})/,a) { $0=a[1] gensub(/./," &","g",a[2]) a[3] } 1' file
\Hollands\\\\\\h O l A n z / h O l A n s\\\\\\\\
\Hollandse\\\\\\h O l A n s @\\\\\\\\
\Hollywood\\\\\\h O l i w u d / h O l i w u t / h O l i w Y d\\\\\\\\
推荐阅读
- html - HTML页面单独显示很好,但在角度项目中不显示
- java - MYSQL 的问题
- acumatica - Acumatica - 根据不同的字段将复选框设置为 true
- r - 为开源贡献维护不同版本的 R 包
- php - 以 HTML 输入类型显示当前日期时间
- google-apps-script - 谷歌幻灯片查找文本并记录它
- typescript - 量角器从使用 mat-select 实现的下拉列表中选择值
- java - 如何将更多类型的参数传递给具有一个参数的方法
- php - Symfony3:返回一个完整的 JsonResponse 循环
- python - Tkinter - dragging mouse across disabled Textbox stops update()