Linux Bash 程序题解

问题描述:

设计一个程序 cuts,它由标准输入读取数据,获取由第一个参数 n 和第二个参数 m 所限定范围的数据,n 和 m 都是整数,即从输入的字符串中抽取第 n 个字符至第 m 个字符之间的所有字符(包括这两个字符)。例如:

$ cuts 11 14
this is a test of cuts program # 输入
test  # 显示结果

方案一:

利用bash的参数展开语法:
${parameter:offset:length}

#!/bin/bash

offset=${1:-1}
offset=`expr $offset - 1`
right=${2:-1}
length=`expr $right - $offset`
read input
echo ${input:$offset:$length}

方案二:

利用 cut 命令:cut -c N-M

NAME
       cut - remove sections from each line of files

SYNOPSIS
       cut OPTION... [FILE]...

DESCRIPTION
       Print selected parts of lines from each FILE to standard output.

       -c, --characters=LIST
              select only these characters

Each LIST is  made  up  of  one
       range,  or  many ranges separated by commas.  Selected input is written
       in the same order that it is read, and is written exactly  once.   Each
       range is one of:

       N      N’th byte, character or field, counted from 1

       N-     from N’th byte, character or field, to end of line

       N-M    from N’th to M’th (included) byte, character or field

       -M     from first to M’th (included) byte, character or field

       With no FILE, or when FILE is -, read standard input.
#!/bin/bash

N=${1:-1}
M=${2:-1}

read input 
echo $input | cut -c $N-$M
  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值