首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将大字符串拆分成子字符串

将大字符串拆分成子字符串
EN

Stack Overflow用户
提问于 2011-09-27 19:08:36
回答 10查看 31.1K关注 0票数 16

我有一根很大的线,比如

代码语言:javascript
运行
复制
ABCDEFGHIJKLM...

我想用这种方式把它分成长度为5的子串:

代码语言:javascript
运行
复制
>1
ABCDE
>2
BCDEF
>3
CDEFG
[...]
EN

回答 10

Stack Overflow用户

发布于 2011-09-27 19:15:12

${string:position:length}

从位于$position$string中提取子串的$length字符。

stringZ=abcABC123ABCabc # 0123456789.....基于#0的索引。echo ${stringZ:0} # abcABC123ABCabc echo ${stringZ:1} # bcABC123ABCabc echo ${stringZ:7} # 23ABCabc echo ${stringZ:7:3} # 23A #三个字符的子串。

--来自Mendel Cooper的《高级Bash脚本指南》中的

然后使用循环遍历并在位置上加1,以提取每个长度为5的子串。

代码语言:javascript
运行
复制
end=$(( ${#stringZ} - 5 ))
for i in $(seq 0 $end); do
    echo ${stringZ:$i:5}
done
票数 28
EN

Stack Overflow用户

发布于 2011-09-27 19:56:35

sed可以在一次操作中完成:

代码语言:javascript
运行
复制
$ echo "abcdefghijklmnopqr"|sed -r 's/(.{5})/\1 /g'
abcde fghij klmno pqr

取决于您的需求:

代码语言:javascript
运行
复制
$ echo "abcdefghijklmnopqr"|sed -r 's/(.{5})/\1\n/g' 
abcde
fghij
klmno
pqr

更新

我认为这只是一个简单的字符串分裂问题,没有仔细阅读问题。现在,它应该提供您需要的内容:

仍然只有一次机会,但这次使用awk:

代码语言:javascript
运行
复制
$ echo "abcdefghijklmnopqr"|awk '{while(length($0)>=5){print substr($0,1,5);gsub(/^./,"")}}'

abcde
bcdef
cdefg
defgh
efghi
fghij
ghijk
hijkl
ijklm
jklmn
klmno
lmnop
mnopq
nopqr
票数 14
EN

Stack Overflow用户

发布于 2018-11-08 06:02:33

fold -w5应该可以做到这一点。

代码语言:javascript
运行
复制
$ echo "ABCDEFGHIJKLMNOPQRSTUVWXYZ" | fold -w5
ABCDE
FGHIJ
KLMNO
PQRST
UVWXY
Z

干杯!

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7568112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档