题目
编写一个shell脚本,该脚本可以实现将一个文本文件中的所有行进行反转,并将结果保存到另一个文件中。以下哪个命令可以实现?A. cat input.txt | sort -r > output.txtB. cat input.txt | tac > output.txtC. cat input.txt | rev output.txtD. cat input.txt | awk 'BEGIN(OFS=ORS="");(for (i=NF;i >0;i--)print i)' > output.txt
编写一个shell脚本,该脚本可以实现将一个文本文件中的所有行进行反转,并将结果保存到另一个文件中。以下哪个命令可以实现?
A. cat input.txt | sort -r > output.txt
B. cat input.txt | tac > output.txt
C. cat input.txt | rev output.txt
D. cat input.txt | awk 'BEGIN(OFS=ORS="");{for (i=NF;i >0;i--)print $i}' > output.txt
题目解答
答案
B. cat input.txt | tac > output.txt
解析
本题考查对Shell命令的理解,核心在于行顺序的反转与字符顺序的反转的区别。关键点在于:
tac命令可直接实现行逆序输出;sort -r是按字典序降序排序,rev是反转单行字符顺序,awk脚本逻辑错误;- 需区分行顺序反转与行内字符反转。
选项分析
A. cat input.txt | sort -r > output.txt
- 功能:按字典序降序排列行。
- 问题:未实现行逆序,而是按内容排序。
B. cat input.txt | tac > output.txt
- 功能:直接输出文件所有行的逆序。
- 正确性:完全符合题目要求。
C. cat input.txt | rev output.txt
- 功能:反转每行内的字符顺序。
- 问题:处理对象是行内字符,而非行顺序。
D. cat input.txt | awk 'BEGIN(OFS=ORS="");{for (i=NF;i >0;i--)print $i}' > output.txt
- 功能:尝试反转每行字段顺序,但脚本存在语法错误(
BEGIN括号应为{}),且逻辑错误(未处理行顺序)。 - 问题:无法实现行逆序。