我如何从中得到:
randomcollege-nt\user90
对此:
user90
使用sed
?
sed
访问的教程,请访问:grymoire.com/Unix/Sed.html
我如何从中得到:
randomcollege-nt\user90
对此:
user90
使用sed
?
sed
访问的教程,请访问:grymoire.com/Unix/Sed.html
Answers:
我会用一个简单的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
grep -F
输入整个字符串时才会显示。
您正在解析一些文本以从domain\username
字符串(最有可能是Windows)中提取用户名。以上大多数答案仅针对您的特定示例字符串。
最好的方法是在sed中使用regex提取之后的所有内容\
。这是您的操作方式:
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
sh
功能。pubs.opengroup.org/onlinepubs/009604599/utilities/...
这是问题吗?
$ echo randomcollege-nt\user90| sed -e s,randomcollege-nt\,,
user90
如果sting randomcollege-nt不满意,请使用上方/下方的awk命令。
/user90
不明白user90
而是使用“ awk”过滤“ user90”:
echo "randomcollege-nt\user90" | awk -F\\ {'print $2'}
这个简单的grep命令即可完成这项工作,
$ echo 'randomcollege-nt\user90' | grep -oP '[^\\]*$'
user90
man the_command_name
用途,请键入,然后您将获得有关该命令的有用的说明手册。您也可以访问www.google.com并输入“ command_name教程”,您将找到大量的分步指南。