我有一个文本文件包含:
台北市\\tai2bei3shi4 警察局\\jing3cha2ju2.
我想删除从\\
开始到白色空间结束的所有内容。结果如下:
台北市 警察局
我该怎么办?有一行命令吗?
答案 0 :(得分:1)
这可以使用GNU sed:
sed 's/\\[^ ]*//g' <textfile>
Sed的替换工作如下:s/regexp/replacement/
regexp
部分为\\[^ ]*
,表示“找到\
及其后的任何非空格字符”replacement
为空,因为我们想要用匹配的regexp
部分替换g
表示应该在每一行上多次执行替换答案 1 :(得分:0)
如果您删除从\\开始并在空白处结束的所有内容,您将获得
台北市警察局\\jing3cha2ju2.
不是
台北市 警察局
但是如果你想获得台北市 警察局
:
sed -r 's/\\\\[^ ]+( |\.)//g' file.txt
产生以下输出:
台北市警察局
您可以通过添加> file2.txt
\\\\
你必须对两个角色进行筛选,这就是为什么有四个角色
[^ ]+
一系列不包含空格的字符
( |\.)
一个空格或一个点(必须用点划线)
-r
所以你不必使用方括号或括号
答案 2 :(得分:0)
基于您输入的sed行:
sed 's/[0-9a-zA-Z.\\\\]*//g' file
<强>测试强>
kent$ echo "台北市\\tai2bei3shi4 警察局\\jing3cha2ju2."|sed 's/[0-9a-zA-Z.\\\\]*//g'
台北市 警察局