删除从“\\”开始并在空白处结束的所有内容

时间:2012-10-03 14:51:55

标签: shell

我有一个文本文件包含:

台北市\\tai2bei3shi4 警察局\\jing3cha2ju2.

我想删除从\\开始到白色空间结束的所有内容。结果如下:

台北市 警察局

我该怎么办?有一行命令吗?

3 个答案:

答案 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'
台北市  警察局