1

私はシェルスクリプトを開発していますが、以下の部分で立ち往生しています。

私はファイルを持っています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を検索している場合、5 までの行のみが必要で、in の値が5 より大きいI後の行は必要ありません。S.NO

出力は次のようになります。output.txt

S.No    Sub1    Sub2
1       100     200
2       100     200
3       100     200
4       100     200
5       100     200
4

5 に答える 5

1

使用perl:

perl -ane 'print if $F[$1]<=5' file
于 2013-06-08T23:38:38.840 に答える
1

そしてsedソリューション

n=5
sed "/^$n[[:space:]]/q" filename

sedqコマンドは、現在の行を出力した後に終了します

于 2013-06-09T13:32:21.977 に答える
0

提案された awk は、列 1 が数値でソートされていることに依存しています。質問のタイトルを満たす一般的な awk は次のようになります。

gawk -v p=5 '$1==p {print; exit} {print}' 

ただし、この状況では、sed の方が優れています。-i を使用して、入力ファイルを変更します。

于 2013-06-10T04:52:24.440 に答える
0
sed '6q' sample.txt > output.txt
于 2013-06-10T08:25:15.753 に答える