我该如何使用sed或grep

时间:2019-06-05 02:40:56

标签: sed newline

我有一个20000行的文本文件,其中某些行内容为1个符号或该范围内的2或3:

[\x{0990}-\x{099D}]

我想在该行中的最后一个符号之后添加新行\ n: 之前:

Alpha beta @#$ gama

之后:

Alpha beta @#$
gama

3 个答案:

答案 0 :(得分:0)

您需要搜索字符串:

([!@#$%^&*()_+=~`-]{1,3})([^!@#$%^&*()_+=~`-]*)$

并替换为:

\1\n\2

测试here

可以根据需要调整符号列表。我在键盘上的数字键上添加了大多数符号。

答案 1 :(得分:0)

您的意思是这样的吗?

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

答案 2 :(得分:0)

字符为ঐ঑঒ওঔকখগঘঙচছজঝ,您可以在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

查看online sed demo

在这里

  • (ঐ|঑|঒|ও|ঔ|ক|খ|গ|ঘ|ঙ|চ|ছ|জ|ঝ){1,3}是括号表达式,与所需字符1、2或3次匹配
  • [[:space:]]*-超过0个空格。

&\n替换模式会插入整个匹配项,然后添加换行符。

提示:要修剪这些字符后的空格,请使用

sed -E 's/((ঐ|঑|঒|ও|ঔ|ক|খ|গ|ঘ|ঙ|চ|ছ|জ|ঝ){1,3})[[:space:]]*/\1\n/g'