【发布时间】:2020-12-15 23:08:44
【问题描述】:
我有这个任务
FILE 变量是正好包含 30 行的文本文件的名称。每行仅包含一个单词,由大小写字母和数字组成。
更改此文件,使单词中的所有数字消失,所有字母变为小写,并且修改后的单词按字母升序排序。修改后的文件将具有三列单独表格的格式,其中第一列将包含排序后的前 10 个单词,第二列包含第二个 10 个单词,其余为第三个。为文件的行编号。
input:
hUeY65u
9sjKdfh
A56oi4
22cfe4HW
Gws6K
zh71p6t
...
output:
1 aoi gwsk sjkdfh
2 cfehw hueyu zhpt
...
我创建了这个脚本,它适用于我,但不适用于学校服务器。你不知道问题可能出在哪里。谢谢
cat $FILE | tr '[:upper:]' '[:lower:]' | tr -d "[0-9]" | sort >file1.txt;
split -l 10 file1.txt; paste xaa xab xac >file2.txt; nl file2.txt;
Stderr mismatch:
-----expected-----
--------got-------
/home/blxrpcdcgb/Student: line 1: $FILE: ambiguous redirect
paste: xaa: No such file or directory
------------------
'"$HOME"/file1.txt' is excessive.
'"$HOME"/file2.txt' is excessive.
'"$HOME"/kfekd jojny' has incorrect content:
-----expected-----
1 azkxbj ikrmp rynlv
2 bledfoa jttknol sipei
3 cdquayr jxphn tatuqun
4 csglb llnsly vjyqfl
5 dwuzei loxrha vpjjhqf
6 egs moxia wbbvk
7 enzvxg ozaww wmiik
8 fuvks ph wpy
9 gnbjr phcupa xsovhv
10 hdjufth pisza zuumxy
--------got-------
1sipei
Vpjjhqf
moxIA
wmiik96
9ph32
ozaWW
egs30
Pisza09
jttknol
hdjufTH
ZuumXY
llnsLY
Tatuqun
ikrMP
loxrHA
dwuzei
wbbvk
Xsovhv
PhcuPA
2fuvKS
Wpy09
jxpHN
Bledfoa
VjyqFL
gnbjr
Cdquayr
csglb
8rynLV
azkxBJ
0enzvxg
------------------
【问题讨论】:
-
不应该修改原文件吗?另请注意,没有其他选项的
nl不会为空行编号。 -
你怎么知道在学校服务器上不行?你运行它并得到不同的输出吗?
-
你需要扩展评论它可以工作......但不能在学校服务器上;考虑更新问题以包含
$FILE的完整内容以及在学校服务器上运行命令的完整输出 -
也许“学校服务器”是指学校的作业提交服务,而不是OP有shell访问权限的机器。
-
您的命令行本身没有任何问题。您将在
file2.txt中创建已排序的列,然后nl将在file2.txt中以数字为前缀输出行您自己,或者您使用nl的格式不正确。否则,你的命令行可以工作。
标签: bash shell sorting split tr