我想从文本文件中提取一些行,我最近开始调整sed,
我有一个结构
的文件88 3 3 0 0 1 101 111 4 3
89 3 3 0 0 1 3 4 112 102
90 3 3 0 0 1 102 112 113 103
91 3 3 0 0 2 103 113 114 104
我想要做的是根据第二列提取信息,我在我的bash脚本中使用......(参数2是infile)
sed -n '/^[0-9]* [23456789]/ p' < $2 > out
然而,除了范围[23456789]之外我有不同的条目,例如10,因为它由1和0组成,为了得到这两个字符应该在我猜的范围内,但是有条目'1 '(第二栏)我不喜欢这样写怎么能写'10'而不是'1'。
最佳, 了Umut
答案 0 :(得分:0)
sed -rn '/^[0-9]* (2|3|4|5|6|7|8|9|10)/p' < $2 > out
答案 1 :(得分:0)
sed -rn '/^[0-9]* ([23456789]|10)/ p' < $2 > out
您需要 extend-regexp 支持(-r)才能拥有|运算符(或)
另一个有趣的方式是:
sed -rn '/^[0-9]* ([23456789]|[0-9]{2,})/ p' < $2 > out
这意味着[23456789] 或重复2位或更多位数。
答案 2 :(得分:0)
即时您在数据中看到可变大小的列,您应该开始考虑awk
:
awk '$2 > 1 && $2 < 11 {print}{}'
假设你的文件格式正确,就可以了。