Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 删除从“开始”开始的所有内容\\&引用;在空白处结束_Shell - Fatal编程技术网

Shell 删除从“开始”开始的所有内容\\&引用;在空白处结束

Shell 删除从“开始”开始的所有内容\\&引用;在空白处结束,shell,Shell,我有一个文本文件包含: 台北市\\tai2bei3shi4 警察局\\jing3cha2ju2. 我想删除从\\开始到空白处结束的所有内容。结果如下所示: 台北市 警察局 我怎么做?是否有单行命令?此命令通过以下方式工作: sed的/\\[^]*//g' Sed的替换工作如下:s/regexp/replacement/ regexp部分是\\[^]*,意思是“查找\及其后面的任何非空白字符” replacement为空,因为我们希望将匹配的regexp部分替换为空 g意味着应在每一行上执

我有一个文本文件包含:

台北市\\tai2bei3shi4 警察局\\jing3cha2ju2.
我想删除从
\\
开始到空白处结束的所有内容。结果如下所示:

台北市 警察局
我怎么做?是否有单行命令?

此命令通过以下方式工作:

sed的/\\[^]*//g'
Sed的替换工作如下:
s/regexp/replacement/

  • regexp
    部分是
    \\[^]*
    ,意思是“查找
    \
    及其后面的任何非空白字符”
  • replacement
    为空,因为我们希望将匹配的
    regexp
    部分替换为空
  • g
    意味着应在每一行上执行尽可能多的更换

如果删除从\\开始到空白处结束的所有内容,您将获得

台北市警察局\\jing3cha2ju2.

不是

台北市 警察局

但是如果你想得到
台北市 警察局

sed -r 's/\\\\[^ ]+( |\.)//g' file.txt
产生以下输出:

台北市警察局
通过添加
>file2.txt

\\\
您必须同时替换两个角色,这就是为什么其中有四个角色

[^]+
不包含空格的一系列字符

(|\)
一个空格或一个点(点必须被替换)


-r
因此,您不必根据您的输入来替换方括号或圆括号

sed行:

sed 's/[0-9a-zA-Z.\\\\]*//g' file
测试

kent$  echo "台北市\\tai2bei3shi4 警察局\\jing3cha2ju2."|sed 's/[0-9a-zA-Z.\\\\]*//g'
台北市  警察局

您可以使用搜索和替换实用程序。搜索模式并将其替换为空白。如果删除从\\开始并在空白处结束的所有内容,您将得到
台北市警察局\\jing3cha2ju2.
台北市 警察局
kent$  echo "台北市\\tai2bei3shi4 警察局\\jing3cha2ju2."|sed 's/[0-9a-zA-Z.\\\\]*//g'
台北市  警察局