Mat*_*ins 1 regex awk grep sed
如果word3是'nn1',我希望Grep(或awk或sed)在新行上输出word2.我的制表符分隔的源文本文件中的每一行都是
<number> <word1> <word2> <word3> <lots of junk>
Run Code Online (Sandbox Code Playgroud)
或者我需要在两个通道中执行此操作 - 一个用于隔离线路,一个用于拉出word2?
任何帮助感激不尽!
你可以使用awk:
awk '$4 == "nn1"{print $3}' file
Run Code Online (Sandbox Code Playgroud)
注意:对于制表符分隔文件以及上面的awk命令将起作用,因为空格或制表符是默认分隔符.
但是,如果您希望仅在选项卡上而不是在空格上拆分字段,请使用:
awk -F'\t' '$4 == "nn1"{print $3}' file
Run Code Online (Sandbox Code Playgroud)
Awk是这项工作的工具:
awk '$4 == "nn1" { print $3 }' file
Run Code Online (Sandbox Code Playgroud)
如果是第四列nn1,则打印第三列.
默认情况下,awk会在任意数量的空白字符(制表符或空格)上拆分该行.正如你所说的"word1","word2"等我想每个字段中没有空格,所以默认行为应该没问题.但是,如果要显式,可以自己指定字段分隔符:
awk -F'\t' '$4 == "nn1" { print $3 }' file
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
221 次 |
| 最近记录: |