如果行包含字符串,则grep模式输出子字符串

时间:2015-10-26 14:51:00

标签: regex awk sed grep

如果word3是' nn1'我喜欢Grep(或awk或sed)在新行上输出word2。我的制表符分隔的源文本文件中的每一行都是

<number> <word1> <word2> <word3> <lots of junk>

或者我是否需要在两次传递中执行此操作 - 一次隔离线,一次抽出word2?

感激不尽的任何帮助!

2 个答案:

答案 0 :(得分:5)

您可以使用awk:

Dim lb As MSForms.ListBox
Dim chartSheet as worksheet

    Set chartSheet = Sheets("Chart")

    Set lb = chartSheet.Objects("lbPartNo") ' nope
    Set lb = chartSheet.ListObjects("lbPartNo") ' nope
    Set lb = chartSheet.ListBoxes("lbPartNo") ' nope

注意:对于制表符分隔文件以及上面的awk命令将起作用,因为空格或制表符是默认分隔符。

然而如果您希望仅在标签上拆分字段而不在空格上拆分,请使用:

awk '$4 == "nn1"{print $3}' file

答案 1 :(得分:5)

Awk是这项工作的工具:

awk '$4 == "nn1" { print $3 }' file

如果第四列是nn1,请打印第三列。

默认情况下,awk会在任意数量的空格字符(制表符或空格)上拆分该行。正如你所说的“word1”,“word2”等我想每个字段中没有空格,所以默认行为应该没问题。但是,如果要显式,可以自己指定字段分隔符:

awk -F'\t' '$4 == "nn1" { print $3 }' file