gpt4 book ai didi

linux - 如果行匹配字符串之后的任何内容,则执行命令

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:48:03 25 4
gpt4 key购买 nike

我非常擅长 grep、cut、sed 等。但是,我很难从文件中提取这些数据。它看起来像这样:

--timestamp--  data://example1// -----| This could be anything or nothing
--timestamp-- data://example2// -----| This could be something
--timestamp-- data://example3// -----|
--timestamp-- data://example4// -----| This could something else
--timestamp-- data://example5// -----| This could be another something
--timestamp-- data://example6// -----|
--timestamp-- data://example7// -----| This could something else

我想返回所有在字符串 -----| 之后有任何内容的行,所以输出将是:

example1
example2
example4
example5
example7

我知道我需要使用基于 grep '-----|.*$' 匹配项的 IF 语句。就是如果字符串后面有字符,则输出该行。然后,我可以通过管道传输到一个 awk 命令,该命令将在示例前后的分隔符 // 之间提取。我只是真的坚持如何构建 if 语句。

如果您对此 IF 语句有任何帮助,我们将不胜感激。

最佳答案

您可以使用 awk 来使用 // 作为字段分隔符并打印第二个字段:

awk -F'//' '/-{5}\|[ \t]*[^ \t]/{print $2}' file

example1
example2
example4
example5
example7

正则表达式:/-{5}\|[\t]*[^\t]/ 搜索五个虚线,后跟文字管道,后跟 0 个或更多空格,然后是非 -空白字符。

您还可以使用 POSIX 类 [[:blank:]] 来匹配空格或制表符:

awk -F'//' '/-{5}\|[[:blank:]]*[^[:blank:]]/{print $2}' file

关于linux - 如果行匹配字符串之后的任何内容,则执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39496168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com