如何删除特定字符后的string中的所有内容?

编程之家收集整理的这篇文章主要介绍了如何删除特定字符后的string中的所有内容?编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

如何删除特定字符后的string中的所有内容?

例:

before: text_before_specific_character(specific_character)text_to_be_deleted after: text_before_specific_character

我知道这可以用'sed'来完成。 但我卡住了。 有人可以帮我吗?

检查bash中的空string

当我sudo bash -c会发生什么?

Sudo – 等待孩子,并获得孩子的PID

你如何给su当前的用户环境variables

移动一个未知名称文件

没有理由使用像sed这样的外部工具。 bash可以在内部完成, 使用参数扩展 :

如果您要修剪的字符是: ,例如:

$ str=foo_bar:baz $ echo "${str%%:*}" foo_bar

你可以用贪婪和非贪婪的方式做到这一点:

$ str=foo_bar:baz:qux $ echo "${str%:*}" foo_bar:baz $ echo "${str%%:*}" foo_bar

特别是如果你在一个严格的循环中调用这个函数,启动一个新的sed进程,写入进程,读取它的输出,等待它退出(以获得它的PID)可能是一个很大的开销, bash不会有。

现在 – 通常,当想要这样做时,你可能真正想要的是将变量分割成字段,这更好地通过read来完成。

例如,假设您正在从/etc/passwd读取一行:

line=root:x:0:0:root:/root:/bin/bash IFS=: read -r name password_hashed uID gID fullname homedir shell _ <<<"$line" echo "$name" # will emit "root" echo "$shell" # will emit "/bin/bash"

即使你想处理文件中的多行,也可以单独使用bash来完成,而且不需要外部进程:

while read -r; do echo "${REPLY%%:*}" done <file

…将首先发布一切:从file每一行,不需要任何外部工具启动。

你要找的东西其实很简单:

sed 's/A.*//'

A标记特定的字符。 请注意,它是区分大小写的,如果你想捕捉多个字符使用

sed 's/[aAbB].*//'

如果TEXT包含你的文字,如

TEXT=beforexafter

那么特定的字符发生(例如)为x

echo "${TEXT%x*}"

做你想要的。

对于Bash来说, "$TEXT"或"${TEXT}"是整个beforexafter ,但之前的"${TEXT%xafter}"就是before的xafter切割结束。 要砍掉x及其后的任何东西,可以写下"${TEXT%x*}" 。

顺便说一句,还有"${TEXT%%x*}" 。 只有当有多个x才会有所不同。 有了%% ,Bash会截掉所有的x ,而%则只会从最后一个x 。 你可以通过松散地观察,记得更长的%%砍掉更多的文本。

你也可以用Sed来做,当然,如果你愿意:

echo "$TEXT" | sed 's/x.*//'

总结

以上是编程之家为你收集整理的如何删除特定字符后的string中的所有内容?全部内容,希望文章能够帮你解决如何删除特定字符后的string中的所有内容?所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

Java文章

为什么套接字连接()到它自己的临时端口?
如何删除特定字符后的string中的所有内容?
如何在Linux上findJava或JRuby中的PID?
如何使用文件path自动完成bash命令行?
三星Galaxy 7“(GT-P6210)没有检测到USBdebugging?
在Linux上创buildJava守护程序服务的工具
Tomcat 7:如何正确设置初始堆大小?
脚本Gnuplot在Windows操作系统
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注