我是脚本新手,我有以下问题: 1.获得"文件后:"文本文件中的值应该跳过2行,然后从第2行读取
( - 这里我想跳过2行,如果我找到"文件:"在txt文件中。它可能发生超过1次)。
i / p文件是:
file : noki lab:3232 date : 12/3/16
field length position text
name 16 0 1 account name
info 1 10 Bank account info
city 3 0 13 bank acc city name
state 4 17 acc state
- 这里我想跳过2行我发现"文件:"在txt文件中。它有可能发生超过1次。
阅读后我想选择"提交"和"位置"仅列数据。 代码:
awk -F' ' ' {print $ 1,$ 3}' ip.txt
但我得到了o / p之类的:
name 0
info 10
city 0
state 17
这是错误的,我需要输出:
name 1
info 10
city 13
state 17
答案 0 :(得分:2)
awk
救援!
$ awk '/^file :/ {c=2}
!(c&&c--) {print $1, $(NF-1)}' file
name 1
info 10
city 13
state 17
<强>解释强> 当模式匹配时,将计数器设置为2,跳过指定的行数,并从其余部分打印第一个和倒数第二个字段。
<强>更新强>
如果最后一列包含空格,则最简单(仅gawk
)
$ awk '/^file :/ {c=2}
!(c&&c--) {print $1,gensub(/.* ([0-9]+) .*/,"\\1",1)}' file
name 1
info 10
city 13
state 17
否则,花时间修改输入文件的格式。摆脱字段之间的额外0
,将字段分隔符更改为制表符等。