SED命令删除字符串末尾的单词
我想删除文件中字符串的最后两个单词 我首先使用此命令删除最后一个单词。但我做不到。有人能帮我吗SED命令删除字符串末尾的单词,sed,Sed,我想删除文件中字符串的最后两个单词 我首先使用此命令删除最后一个单词。但我做不到。有人能帮我吗 sed 's/\w*$//' <file name> 我想删除数值和括号中的数值 输出: asbc/jahsf/jhdsflk/jsfh/ 看起来在你想要保留的东西和你想要摆脱的东西之间有一个标签。我面前没有linux,但是试试这个 sed 's/\t.*//' 这是假设字符串的格式总是相同的,这是我从你的评论中得到的。看起来在你想要保留的内容和你想要删除的内容之间有一个标
sed 's/\w*$//' <file name>
我想删除数值和括号中的数值
输出:
asbc/jahsf/jhdsflk/jsfh/
看起来在你想要保留的东西和你想要摆脱的东西之间有一个标签。我面前没有linux,但是试试这个
sed 's/\t.*//'
这是假设字符串的格式总是相同的,这是我从你的评论中得到的。看起来在你想要保留的内容和你想要删除的内容之间有一个标签。我面前没有linux,但是试试这个
sed 's/\t.*//'
这是假设您的字符串的格式总是相似的,这是我从您的评论中得到的。使用GNU sed:
$ sed -r 's/([[:space:]]+[-+.()[:alnum:]]+){2}$//' file
asbc/jahsf/jhdsflk/jsfh/
工作原理
匹配一个或多个空格[[:space:]+
匹配允许包含任意数量的加号或减号、句点、括号或任何字母数字字符的“单词” 请注意,当句点位于方括号内时,[-+。()[:alnum:]+
,它只是一个句点,而不是通配符:不需要转义[.]
匹配一个或多个后跟单词的空格([[:space:]+[-+。()[:alnum:]]+)
匹配两个单词及其前面的空格([[:space:]+[-+.()[:alnum:]+){2}$
[:space://code>和[:alnum://code>。与旧式类(如[a-zA-Z0-9]
)不同,这些类是unicode安全的
OSX(BSD)sed
以上内容在GNU sed上进行了测试。对于BSD sed,请尝试:
sed -E 's/([[:space:]][[:space:]]*[-+.()[:alnum:][:alnum:]]*){2}$//' file
删除带小数点的数字后面的所有内容
这将查找带可选符号的十进制数并删除它、它前面的空格以及它后面的所有内容:
$ sed -r 's/[[:space:]]+[-+]?[[:digit:]]+[.][[:digit:]]+[[:space:]].*//' file
asbc/jahsf/jhdsflk/jsfh/
工作原理:
[[:space:]+
匹配一个或多个空格
[-+]?
匹配零或一个符号
[[:digit:][]+
匹配任意数量的数字
[.]
匹配小数点(句点)
[[:digit:][]+
匹配小数点后的一个或多个数字
[[:space:]
匹配数字后面的空格
*
匹配下面的任何内容
使用GNU-sed:
$ sed -r 's/([[:space:]]+[-+.()[:alnum:]]+){2}$//' file
asbc/jahsf/jhdsflk/jsfh/
工作原理
[[:space:]+
匹配一个或多个空格
[-+。()[:alnum:]+
匹配允许包含任意数量的加号或减号、句点、括号或任何字母数字字符的“单词”
请注意,当句点位于方括号内时,[.]
,它只是一个句点,而不是通配符:不需要转义
([[:space:]+[-+。()[:alnum:]]+)
匹配一个或多个后跟单词的空格
([[:space:]+[-+.()[:alnum:]+){2}$
匹配两个单词及其前面的空格
注意字符类的使用,如[:space://code>和[:alnum://code>。与旧式类(如[a-zA-Z0-9]
)不同,这些类是unicode安全的
OSX(BSD)sed
以上内容在GNU sed上进行了测试。对于BSD sed,请尝试:
sed -E 's/([[:space:]][[:space:]]*[-+.()[:alnum:][:alnum:]]*){2}$//' file
删除带小数点的数字后面的所有内容
这将查找带可选符号的十进制数并删除它、它前面的空格以及它后面的所有内容:
$ sed -r 's/[[:space:]]+[-+]?[[:digit:]]+[.][[:digit:]]+[[:space:]].*//' file
asbc/jahsf/jhdsflk/jsfh/
工作原理:
[[:space:]+
匹配一个或多个空格
[-+]?
匹配零或一个符号
[[:digit:][]+
匹配任意数量的数字
[.]
匹配小数点(句点)
[[:digit:][]+
匹配小数点后的一个或多个数字
[[:space:]
匹配数字后面的空格
*
匹配下面的任何内容
这可能适合您(GNU-sed):
或者,如果您愿意:
sed -r 's/(\s+\S+){2}\s*$//' file
这将匹配并删除:一个或多个空格,后跟一个或多个非空格两次,后跟行末尾的零个或多个空格。这可能适用于您(GNU-sed):
或者,如果您愿意:
sed -r 's/(\s+\S+){2}\s*$//' file
这将匹配并删除:一个或多个空格,后跟一个或多个非空格两次,后跟行末尾的零个或多个空格。谢谢您的解释。“我现在明白它是怎么工作的了。”约翰,我想再问你一个问题。如果我想删除-0.001之后的所有字符串,我可以做什么。示例:asbc/jahsf/jhdsflk/jsfh/-0.001(检查:abs-sjkfd-jks)@SKG-OK。我添加了一个解决方案。你没有说你想要什么。我选择了对匹配进行相当严格的限制:它必须是一个带小数点的数字和小数点后的一个或多个数字,所有数字后面至少有一个空格。谢谢您的解释。“我现在明白它是怎么工作的了。”约翰,我想再问你一个问题。如果我想删除-0.001之后的所有字符串,我可以做什么。示例:asbc/jahsf/jhdsflk/jsfh/-0.001(检查:abs-sjkfd-jks)@SKG-OK。我添加了一个解决方案。你没有说你想要什么。我选择使匹配具有相当的限制性:它必须是一个带小数点的数字和小数点后的一个或多个数字,所有数字后面至少有一个空格。