我正在尝试从文件/([0-9]+)#(\w)+.(\w)+.(\w)+.(\w)+.(\w)+#/g
中删除此模式
我正在使用sed
(但我可以使用Linux中的任何其他工具)。
sed 's|/([0-9]+)#(\w)+.(\w)+.(\w)+.(\w)+.(\w)+#/g||g' test.txt
在上面的命令中,我试图用空字符串替换正则表达式匹配(删除正则表达式匹配) 运行此功能不会对文件进行任何更改。
以下是我在test.txt文件中的内容
3149177#sometext.something.a01234.e8f933.1414522190425#{....}3149177#sometext.somethingElsea.a12345.e8f932.1414412190425#{.....}3149177#sometext.somethingElsea.a23456.e8f931.1414512190425#{....}
以下是编辑后我想要的内容
{....}{.....}{....}
答案 0 :(得分:1)
您有额外的分隔符和g
标记。这有效:
sed -i.bak -r 's|([0-9]+)#(\w)+.(\w)+.(\w)+.(\w)+.(\w)+#||g' test.txt
{....}{.....}{....}
答案 1 :(得分:1)
你可以将正则表达式减少到这个:
sed -i.bak -r 's/\d+#\w+(?:\.\w+){4}#//g' test.txt
\d+
\# \w+
(?: \. \w+ ){4}
\#
答案 2 :(得分:0)
你忘记了sed的-i
标志,它负责编辑就地
引自man(BSD sed):
-i extension
Edit files in-place, saving backups with the specified extension. If a zero-length extension is given, no backup will be saved. It is not recommended to give a zero-length extension when in-place editing files, as you risk corruption or par-
tial content in situations where disk space is exhausted, etc.
或GNU sed:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
答案 3 :(得分:0)
使用类似
的内容>>> echo "3149177#sometext.something.a01234.e8f933.1414522190425#{....}3149177#sometext.somethingElsea.a12345.e8f932.1414412190425#{.....}3149177#sometext.somethingElsea.a23456.e8f931.1414512190425#{....}" | sed -r 's/([0-9]+)#(\w)+.(\w)+.(\w)+.(\w)+.(\w)+#//g'
将输出
{....}{.....}{....}
答案 4 :(得分:0)
如果删除行而不是空行是一种可能的解决方案
fgrep -v '/([0-9]+)#(\w)+.(\w)+.(\w)+.(\w)+.(\w)+#/g' test.txt