Shell:如何从文件中获取号码?

Shell:如何从文件中获取号码?
1  2  5  7

我在文本文件中有这样的数字。如何使用 shell 脚本打印第三个数字?

答案1

shell 不是处理此类事情的好工具。有专门为此类任务设计的工具

$ awk '{print $3}' file
5

或者,如果这是一个制表符分隔的文件:

$ cut -f3 file
5

如果没有,您可以将连续空格转换为制表符并仍然使用cut

$ sed 's/  */\t/g' file | cut -f3
5

或者,将它们转换为单个空格并使用cut -d' '

$ sed 's/  */ /g' file | cut -d' ' -f3
5

如果您坚持在 shell 中执行此操作,您可以执行以下操作:

$ while read a b c rest; do echo "$c"; done < file
5

或者

$ nums=( $(cat file) )
$ echo "${nums[2]}"
5

答案2

您可以使用以下命令来显示文件所有行中的第三项(假设文本文件名为数字.txt):

while read one two three four; do 
  echo "$three"; 
done < numbers.txt 

答案3

如果你想显示文本文件的第三行,类似:

cat yourfile | head -n 3 | tail -n 1 

应该做这项工作。如果所有值都在一行中,您可能需要先对它们重新排序

echo 1 2 3 4 5 6 7  | sed -e "s# #\n#g"
1
2
3
4
5
6
7

还有很多其他可能的解决方案,这只是我首先想到的。

相关内容