如何使用10+;在Linux中使用sed不分词的字符?
我想提出一个sed命令,其中每10个字符查找一次最近的空格,并将其替换为“|” 我尝试了如何使用10+;在Linux中使用sed不分词的字符?,linux,unix,sed,Linux,Unix,Sed,我想提出一个sed命令,其中每10个字符查找一次最近的空格,并将其替换为“|” 我尝试了sed-E-E的//|/\(*?[0-9a-zA-Z]*\)\{10,\}新的.file,但它显示了错误 输入示例: Hello there! How are you? I am trying to figure this out. 预期产出: Hello there!|How are you?|I am trying|to figure this|out. 这适用于给定的示例: $sed-E's/(.{
sed-E-E的//|/\(*?[0-9a-zA-Z]*\)\{10,\}新的.file
,但它显示了错误
输入示例:
Hello there! How are you? I am trying to figure this out.
预期产出:
Hello there!|How are you?|I am trying|to figure this|out.
这适用于给定的示例:
$sed-E's/(.{10}[^]*)/\1 |/g'ip.txt
你好|你好吗?我正在努力想办法。
这匹配10个字符,后跟任何非空格字符(.{10}[^]*)
- 然后匹配一个空格
放回捕获的部分和一个\1 |
字符|
- 通过将空格替换为
和非空格替换为[[:space:]
[^[:space:]
- 如果添加
(POSIX ERE)或+
(POSIX BRE),则用管道替换一个或多个空白的任何块\{1,\}
sed 's/\(.\{10\}[^[:space:]]*\)[[:space:]]\{1,\}/\1|/g' ip.txt
sed -E 's/(.{10}[^[:space:]]*)[[:space:]]+/\1|/g' ip.txt
见:
#/bin/bash
你好!你好吗?我正试图弄明白这一点。”
sed的/\(.\{10\}[^[:space:]*\)[:space:]\{1,\}/\1 |/g'它的工作方式和我想要的一样,我为此奋斗了一天。非常感谢你!谢谢你编辑这个问题。你有什么错误?
Hello there!|How are you?|I am trying|to figure this|out.
Hello there!|How are you?|I am trying|to figure this|out.