如果word3是' nn1'我喜欢Grep(或awk或sed)在新行上输出word2。我的制表符分隔的源文本文件中的每一行都是
<number> <word1> <word2> <word3> <lots of junk>
或者我是否需要在两次传递中执行此操作 - 一次隔离线,一次抽出word2?
感激不尽的任何帮助!
答案 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