【发布时间】:2019-06-05 02:40:56
【问题描述】:
我有一个包含 20000 行的文本文件,一些行内容 1 个符号或 2 个或 3 个来自此范围:
[\x{0990}-\x{099D}]
我想在该行的最后一个符号之后添加新行\n,例如: 之前:
Alpha beta @#$ gama
之后:
Alpha beta @#$
gama
【问题讨论】:
我有一个包含 20000 行的文本文件,一些行内容 1 个符号或 2 个或 3 个来自此范围:
[\x{0990}-\x{099D}]
我想在该行的最后一个符号之后添加新行\n,例如: 之前:
Alpha beta @#$ gama
之后:
Alpha beta @#$
gama
【问题讨论】:
字符是ঐওঔকখগঘঙচছজঝ,你可以在sed中显式使用它们:
sed -E 's/(ঐ|||ও|ঔ|ক|খ|গ|ঘ|ঙ|চ|ছ|জ|ঝ){1,3}[[:space:]]*/&\n/g'
完整的就地命令:
sed -i -E 's/(ঐ|||ও|ঔ|ক|খ|গ|ঘ|ঙ|চ|ছ|জ|ঝ){1,3}[[:space:]]*/&\n/g' file; # GNU sed
sed -E -i '' 's/(ঐ|||ও|ঔ|ক|খ|গ|ঘ|ঙ|চ|ছ|জ|ঝ){1,3}[[:space:]]*/&\n/g' file; # Free BSD sed
这里,
(ঐ|||ও|ঔ|ক|খ|গ|ঘ|ঙ|চ|ছ|জ|ঝ){1,3} 是匹配所需字符 1、2 或 3 次的括号表达式[[:space:]]* - 0+ 个空格。&\n 替换模式会插入整个匹配项,然后添加一个换行符。
提示:要修剪这些字符后的空格,请使用
sed -E 's/((ঐ|||ও|ঔ|ক|খ|গ|ঘ|ঙ|চ|ছ|জ|ঝ){1,3})[[:space:]]*/\1\n/g'
【讨论】:
你需要搜索字符串:
([!@#$%^&*()_+=~`-]{1,3})([^!@#$%^&*()_+=~`-]*)$
并替换为:
\1\n\2
测试here。
符号列表可以根据您的需要进行调整。我在键盘上的数字键上添加了大部分符号。
【讨论】:
你的意思是这样的?
sed 's/[\x0990-\x099D]\{1,3\} /&\n/' file.txt
解释
s # use substitution
/ # separator
[\x0990-\x099D]\{1,3\} # 1 to 3 symbols
/ # separator
&\n # replace with symbols\n
/ # separator
【讨论】: