使用sed删除字符串的第一部分

我如何从中得到:

randomcollege-nt\user90 

对此:

 user90 

sed

我用一个简单的grep来查找user90

 $ echo "randomcollege-nt\user90" | grep -o user90 user90 

如果user90不是常量,则首选此命令:

 $ echo "randomcollege-nt\user90" | grep -oP '(?<=randomcollege-nt\\)\w+' user90 

最后使用sed编辑文件:

 $ sed -ri 's/randomcollege-nt\\(user[0-9]+)/\1/' my_file 

或者匹配所有可能的用户帐户:

 $ sed -ri 's/randomcollege-nt\\(\w+)/\1/' my_file 

您正在解析一些文本以从domain\username字符串中提取用户domain\username ,最有可能来自Windows。 以上大多数答案仅针对您的特定示例字符串。

执行此操作的最佳方法是在sed中使用正则表达式来提取\后面的内容。 这是你如何做到这一点:

 sed 's|.*\\\(.*\)|\1|' 

这将匹配所有( .* )直到反斜杠(这里,我们正在逃避它,所以它是\\ ),然后匹配反斜杠( .* )之后的所有内容,但使其成为捕获组(即围绕它的包围括号,但我们也必须逃避它们,所以\(.*\) )。 既然我们在字符串中作为捕获组的\之后有任何内容,我们通过引用它来打印它\1

您可以将以上sed命令与任何域名一起使用,不一定是randomcollege-nt

 $ echo "randomcollege-nt\user90" | sed 's|.*\\\(.*\)|\1|' user90 $ echo "domain\username" | sed 's|.*\\\(.*\)|\1|' username $ echo "anydomainname\roboman1723" | sed 's|.*\\\(.*\)|\1|' roboman1723 

另一个sed

 $ echo "randomcollege-nt\user90" | LC_ALL=C sed -e 's/.*\\//' user90 

或POSIXly:

 $ a='randomcollege-nt\user90' $ printf '%s\n' "${a##*\\}" user90 

我知道你想用sed,但我会用不同的东西……

 echo "randomcollege-nt\user90" | cut -d'\' -f2 

这是个问题吗?

 $ echo randomcollege-nt\user90| sed -es,randomcollege-nt\,, user90 

如果sting randomcollege-nt不存在,请使用上方/下方的awk命令。

而是使用’awk’来过滤“user90”:

 echo "randomcollege-nt\user90" | awk -F\\ {'print $2'} 

这个简单的grep命令可以完成这项工作,

 $ echo 'randomcollege-nt\user90' | grep -oP '[^\\]*$' user90 

sed删除特定字符前的字符串中的所有内容(定义为双括号[Specific char])。

 echo "randomcollege-nt\user90" | sed 's/.*[\]//' 

意味着在具有空格字符( // )的\ char之前替换所有( .*[\] )字符

如果你有一个文件,并希望在sed命令中替换use -i标志,如下所示:

 sed -i 's/.*[\]//' /path/to/FileName 

最初的问题要求sed ,但我看到替代品在这里很受欢迎。

如果您使用Bash,参数扩展是最简单的:

 ORIGIN='randomcollege-nt\user90' echo "${ORIGIN#*\\}" 

如果您可能期望多个反斜杠,请将哈希符号加倍:

 echo "${ORIGIN##*\\}" 

有关更多信息,请使用man bash并搜索Parameter Expansion

如果有人试图删除注释掉# server_tokens off; 从nginx自动帮助自动开发:

sudo sed -ri 's/#\s(server_tokens off;)/\1/' /etc/nginx/nginx.conf

在Ubuntu 16.04 LTS上测试并使用nginx / 1.12.1。 通过在此处关闭服务器令牌来锁定NGINX的相关答案。