bash用较短的字符串正则表达式替换字符串

时间:2016-04-06 17:43:21

标签: linux bash

我有一个文件,我从其他文件中提取字符串。 问题是一些提取的字符串在我们需要删除的末尾有额外的数据,因为有些格式化。 请问我该如何减少这个:

eqwerty&entryPoint=main&something=1238094007035&firstName=Isaac&protocol=http

就是这样:

eqwerty

(“&”之前的第一个字符串?

4 个答案:

答案 0 :(得分:1)

使用BASH字符串操作:

s='eqwerty&entryPoint=main&something=1238094007035&firstName=Isaac&protocol=http'

echo "${s%%&*}"

<强>输出:

eqwerty

答案 1 :(得分:1)

cut -f 1 -d '&' filename也可以。

>>>echo 'eqwerty&entryPoint=main&something=1238094007035&firstName=Isaac&protocol=http' | cut -f 1 -d '&'
eqwerty

答案 2 :(得分:0)

通过sed运行它,如下所示:

sed -e 's:&.*::' <yourlogfile>

如果要在适当的位置修改文件,请添加-i标志

答案 3 :(得分:0)

如果使用awk,可能会有所帮助:

awk -F'&' '{print $1}' file
eqwerty

如果将awk's字段分隔符设置为要删除的字符,则可以将所需的部分设为$ 1

awk '{sub(/&.*/,""); print}' file
eqwerty

使用gsub()将其替换为空字符串