如何在bash中获取给定字符串的第一个出现的行的内容

时间:2014-08-08 01:42:47

标签: bash awk

我想要排队的所有字符,直到第一次出现搜索字符串。

示例:

$ echo "onefootwofoothreefoo" | some_command_for_foo
one

 $ echo "123_456_789_" | some_command_for_underscore
123

我一直在用sed和grep尝试各种各样的东西,但无法让它工作。

1 个答案:

答案 0 :(得分:2)

echo "onefootwofoothreefoo" | awk -Ffoo '{print $1}'

echo "123_456_789_" | awk -F_ '{print $1}'

仅限bash

f=onefootwofoothreefoo
echo "${f%foo${f#*foo}}"

编辑:正如@JohnB指出的那样,以下也有效:

f=onefootwofoothreefoo
echo "${f%%foo*}"