UNIX:Grep特定单词及其后面的所有文本

时间:2016-03-25 17:27:20

标签: linux unix grep

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

例如,$Variable包含:

Hello, User

Your files are:

File1 : Exists

File2 : None

让我们说我想找到File2,这是最后一行,如果它是Yes或None,或冒号后出现的任何文本并将其保存到另一个变量,我想要。

4 个答案:

答案 0 :(得分:2)

改用sed

sed -n '/the word you are looking for/,$p' <file name>

或者因为你说它是一个变量更像是:

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

sed -n说不要打印。

这个模式来自&#34;你要找的那个词&#34;到$这是文件的结尾做p命令是print:)

如果你必须在文件结束前停止,那么你必须用结束模式替换$

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

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')

答案 1 :(得分:1)

所以你有一个变量定义为:

$ var="abc\ndef\nghi\njkl\nmn"

然后,如果你想打印&#34; line&#34;含有&#34; ghi&#34;并按照这种方式:

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

答案 2 :(得分:1)

grep G 以小心方式搜索 R egular E xpression和 P rint匹配的字符串。这不是你想要做的,你想要一个 S 输入和 ED 它输出它的一部分。猜猜UNIX中有什么工具。

$ echo "$var"
Hello, User

Your files are:

File1 : Exists

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

答案 3 :(得分:0)

假设:

function notEquals(n) {
  return function (el) {
    return el !== n;
  }
}

function removeZeros(arr) {
  return arr.filter(notEquals(0));
}

removeZeros(acceptedTermsPoints()); // [3, 3]

您可以使用以下内容将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前面有空格,您可以安排匹配并删除它们。