【发布时间】:2017-07-08 06:50:53
【问题描述】:
我必须在 ubuntu linux 中用 bash 语言编写一个脚本,该脚本必须在命令行中接受三个参数:首先是我必须对其行进行排序的文件的名称,其次是一个字母(如果我想要,'a'如果我想按字母降序排序,则按字母升序或“z”排序),第三个是正数“n”。我只需要对“n”的倍数的行进行排序。例如,如果我有一个包含 100 行且 n=5 的文本文件,那么我必须只对第 5、10、15、...、100 行进行排序,其余的必须保持不变。这可以做到吗? 我可以像这样查找和排序是 'n' 的倍数的行:
awk "NR%$n==0" archivo.txt | sort -f
但现在我不知道如何将这些行再次写入文件。
感谢关注
【问题讨论】:
-
向我们展示你目前拥有的东西。
-
我可以找到是 'n' 的倍数的行并像这样对它们进行排序: awk "NR%$n==0" file.txt | sort -f 但现在我无法再次将这些行重新引入文件中。
-
仅供参考,最好写成
awk -v n="$n" 'NR % n == 0';使用字符串替换来生成脚本(在任何语言中——不仅是 awk,还包括 bash、SQL 等)显然是不安全的,而不是从代码中带外传递数据。