如何使用sed动态替换行中特定位置字符?

希望编写一个shell脚本实现对一个单行长数据串按照指定列宽自动换行显示例如:1)先产生一个单行长字符串$primes10023571113171923293137414... 希望编写一个shell脚本实现对一个单行长数据串按照指定列宽自动换行显示
例如:
1)先产生一个单行长字符串
$ primes 100
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
2)令这个数据串按照每行十列显示
$ primes 100 | sed 's/\t/\n/10;s/\t/\n/19'
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97

打算使用for语句实现对行中特定位置的制表符"\t"进行替换
Number=`wc -w $1 | awk '{print $1}'`
for i in `seq 10 10 $Number`
do
j=0
sed 's/\t/\n/$(($i-$j))' $1
let j+=1
done
但是sed不支持在替换命令中使用变量指定替换字符出现的次数! [囧]
请教该如何处理?使用sed或者awk都行
展开
 我来答
hixtao
2017-03-30 · TA获得超过1099个赞
知道小有建树答主
回答量:468
采纳率:85%
帮助的人:323万
展开全部

如果只追求结果,我建议使用其它命令——比如 pr

primes 0  1000  |  pr   -t   -10

输出结果如下:


如果要用sed,或 awk,估计要费点脑筋。

更多追问追答
追问

不给参数$1时提示:行3:/8:语法错误: 需要操作数 (错误符号是 "/8")

没看出有啥错啊? 求指点:D

追答
你 if 语句中,如果$1为空,则COLUMNS除以8。但COLUMNS没有初始化——没有赋值,所以出现“空/8”。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式