这是我的代码
#!bin/bash
IFS=$'\r\n'
GLOBIGNORE='*'
command eval
'array=($(<'$1'))'
sorted=($(sort <<<"${array[*]}"))
for ((i = -1; i <= ${array[-25]}; i--)); do
echo "${array[i]}" | awk -F "/| " '{print $2}'
done
我不断收到一条错误消息,指出“第5行:array =($(<)):找不到命令” 这是我的问题。
总体而言,我的代码应将文件作为命令行参数读入文件,对元素进行排序,然后打印出最后25行的第2列。我到目前为止还无法进行测试,因此如果有问题,也将不胜感激。
这是文件包含的内容:
290729 123456
79076 12345
76789 123456789
59462 password
49952 iloveyou
33291 princess
21725 1234567
20901 rockyou
20553 12345678
16648 abc123
16227 nicole
15308 daniel
15163 babygirl
14726 monkey
14331 lovely
14103 jessica
13984 654321
13981 michael
13488 ashley
13456 qwerty
13272 111111
13134 iloveu
13028 000000
12714 michelle
11761 tigger
11489 sunshine
11289 chocolate
11112 password1
10836 soccer
10755 anthony
10731 friends
10560 butterfly
10547 purple
10508 angel
10167 jordan
9764 liverpool
9708 justin
9704 loveme
9610 fuckyou
9516 123123
9462 football
9310 secret
9153 andrea
9053 carlos
8976 jennifer
8960 joshua
8756 bubbles
8676 1234567890
8667 superman
8631 hannah
8537 amanda
8499 loveyou
8462 pretty
8404 basketball
8360 andrew
8310 angels
8285 tweety
8269 flower
8025 playboy
7901 hello
7866 elizabeth
7792 hottie
7766 tinkerbell
7735 charlie
7717 samantha
7654 barbie
7645 chelsea
7564 lovers
7536 teamo
7518 jasmine
7500 brandon
7419 666666
7333 shadow
7301 melissa
7241 eminem
7222 matthew
答案 0 :(得分:2)
在Linux中,您只需做一个
sort -nbr file_to_sort | head -n 25 | awk '{print $2}'
答案 1 :(得分:0)
读取文件作为命令行参数,对元素进行排序,然后 打印出最后25行的第2列。
根据问题的描述,我建议:
#! /bin/sh
sort -bn $1 | tail -25 | awk '{print $2}'
通常,请使用外壳程序对文件名进行操作,切勿使用 Shell对数据进行操作。诸如 sort 和 awk 之类的实用程序距离很远 处理外壳时,比shell更快,更强大 文件。