我正在开发一个shell脚本,但我坚持使用下面的部分。
我有文件sample.txt
:
S.No Sub1 Sub2
1 100 200
2 100 200
3 100 200
4 100 200
5 100 200
6 100 200
7 100 200
我想搜索S.No
中的sample.txt
列。例如,如果我正在搜索值5
,我需要最多只有I
的行,而不希望S.NO
中的值大于5后的行。
输出必须如output.txt
S.No Sub1 Sub2
1 100 200
2 100 200
3 100 200
4 100 200
5 100 200
答案 0 :(得分:4)
打印第一行和第一个字段小于或等于5的任何其他行:
$ awk 'NR==1||$1<=5' file
S.No Sub1 Sub2
1 100 200
2 100 200
3 100 200
4 100 200
5 100 200
答案 1 :(得分:1)
使用perl
:
perl -ane 'print if $F[$1]<=5' file
答案 2 :(得分:1)
和sed解决方案
n=5
sed "/^$n[[:space:]]/q" filename
sed q
命令在打印当前行后退出
答案 3 :(得分:0)
建议的awk依赖于第1列是数字排序的。满足问题标题的通用awk将是:
gawk -v p=5 '$1==p {print; exit} {print}'
然而,在这种情况下,sed是更好的IMO。使用-i修改输入文件。
答案 4 :(得分:0)
sed '6q' sample.txt > output.txt