0

ファイル

plym    fury    77      73      2500
chevy   nova    79      60      3000
ford    mustang 65      45      17000
volvo   gl      78      102     9850
ford    ltd     83      15      10500
Chevy   nova    80      50      3500
fiat    600     65      115     450
honda   accord  81      30      6000
ford    thundbd 84      10      17000
toyota  tercel  82      180     750
chevy   impala  65      85      1550
ford    bronco  83      25      9525

$10,000 以上の車 (ファイルの最後の列) をすべて削除する必要があります。これを行うには、並べ替えの出力を sed にパイプする必要があります。5 桁以上を表す正規表現がレコードの末尾に一致したときに終了します。

これは私がパイプしなければならないコマンドです:grep -iv chevy cars | sort -nk 5

私はこれまでに試しました:

grep -iv chevy cars | sort -nk 5 | sed -n '/[0-9]{5}*/'

しかし、役に立たない。


So far we have:

grep -iv chevy cars | sort -nk 5

Now let's delete the cars that are $10,000 or more.  Pipe the output of the sort into
a sed to do this, by quitting as soon as we match a regular expression representing 5
(or more) digits at the end of a record (DO NOT use repetition for this):

You entered: grep -iv chevy cars | sort -nk 5 | sed -n '/[0-9]{5}$/'
Please try again.
4

3 に答える 3

5

-nスイッチを使用するpと、一致する行を明示的!pに rint し、一致しない行、つまり 5 桁の値のない車を出力する必要があります。また、最後にのみ一致するようにパターンに追加し、繰り返しグループに対してand$をエスケープします。そうしないと、数字の後のリテラル文字列に一致します。\{\}{5}

だからこれを試してください:sed -n '/[0-9]\{5\}$/!p'

関連する一致のみを出力するのではなく、最初の一致で終了したい場合は、 のq代わりにコマンドを試してください!p

于 2012-12-01T03:30:45.300 に答える