我有一个位置参数A-B它的间隔,我需要使用这个间隔来打印文件中的行。例如$。/ File.sh 5-10所以我需要我的脚本来打印5到10之间的文件行。
答案 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
中,您有一些更简单的选项。
IFS=- read a b <<< "$1"
[[ $1 =~ ^(.*)-(.*)$ ]] && a=${BASH_REMATCH[1]} b=${BASH_REMATCH[2]}
这些都不涉及让新流程运行外部程序。