Linux输出文本中特定单词,关于linux:UNIX:Grep一个特定的单词及其后的所有文本...

我在Unix中有一个变量,它存储多行字母数字字符。 我想grep到一个特定的单词,并获得其后的所有文本。

例如,$Variable包含:

Hello, User

Your files are:

File1 : Exists

File2 : None

让我们说我想找到File2,这是最后一行,我想确定它是Yes还是None或冒号后面是否存在任何文本并将其保存到另一个变量。

您可以在问题中举一个例子吗?

@JonathanLeffler同一行-例如:到现在为止,如上例所示

请在示例中添加示例输入和该示例输入的所需输出。

因此,您想查看从单词开始到行尾的包含单词的每一行吗? 如果单词是fox并且行是the fox and eagle out-foxed the badger,那么找到两个序列fox中的哪个并不重要吗? 也许令人惊讶的是,要打印第一个(至少在Im所考虑的机制中)更难。 另外,out-foxed是否算作包含单词fox,还是您要查找没有前后字母字符的fox?

@JonathanLeffler不,我在一行中没有重复的单词。 只想找到以该单词开头的行并将其再次保存到变量中

改用sed

sed -n '/the word you are looking for/,$p'

或者因为您说的是变量中的内容,例如:

echo"$variable" | sed -n '/the word you are looking for/,$p'

sed -n表示不打印。

模式显示从"您要查找的单词"到$,即文件的结尾,执行print的p命令:)

如果必须在文件末尾之前停止,则必须将$替换为结束模式

如果只想将结果保存到另一个变量中:

new_variable=$(echo"$variable" | sed -n '/the word you are looking for/,$p')

还要注意,如果要查找的字符串中包含/,则必须用对其进行转义,因此它看起来像

new_variable=$(echo"$variable" | sed -n '/the word you are\/ looking for/,$p')

我可以不打印就将其保存到另一个变量吗?

是的更新帖子

grep用于全局搜索正则表达式并打印匹配的字符串。那不是您想要做的,您想要一个输入流并对其进行EDit输出的一部分。猜猜在UNIX中哪种工具可以做到这一点。

$ echo"$var"

Hello, User

Your files are:

File1 : Exists

File2 : None

$ var2=$(echo"$var" | sed -n 's/^File2 : //p')

$ echo"$var2"

None

因此,您将变量定义为:

$ var="abc

def

ghi

jkl

mn"

然后,如果要打印包含" ghi"的"行"并按照以下方式进行:

$ echo -e $var | sed -n '/ghi/,$p'

鉴于:

variable="Hello, User

Your files are:

File1 : Exists

File2 : None"

您可以使用以下方法将File2的信息放入另一个变量File2中:

file2=$(echo"$variable" | sed -n '/File2/ s/File2 *: *//p')

双引号在变量中保留换行符。 -n禁止默认打印。该模式与包含File2的行匹配,后接任意数量的空格,冒号和任意数量的其他空格。它什么也不会替换,其余的行用sed打印,并捕获在变量File2中。如果数据中File2前面有空格,您也可以安排匹配并删除它们。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值