间隔

时间:2016-03-24 19:50:20

标签: bash shell unix command-line sh

我有一个位置参数A-B它的间隔,我需要使用这个间隔来打印文件中的行。例如$。/ File.sh 5-10所以我需要我的脚本来打印5到10之间的文件行。

2 个答案:

答案 0 :(得分:1)

假设您有一个包含20行的文件,并且您想要打印5-15行...以下命令是您如何实现此目的。

sed -n '5,15p' {name_of_file}

将{name_of_file}替换为实际文件名。

现在我不会写出你的整个脚本,但你可以拿1美元(5-15)并解析那些数据......例如。

fieldOne=$(echo $1 | awk -F"-" '{print $1}') #This will equal 5
fieldTwo=$(echo $1 | awk -F"-" '{print $2}') #This will equal 15

答案 1 :(得分:0)

符合POSIX的解决方案:使用内置的read命令拆分范围。

IFS=- read a b <<EOF
$1
EOF

bash中,您有一些更简单的选项。

  1. IFS=- read a b <<< "$1"
  2. [[ $1 =~ ^(.*)-(.*)$ ]] && a=${BASH_REMATCH[1]} b=${BASH_REMATCH[2]}
  3. 这些都不涉及让新流程运行外部程序。