首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用shell脚本将位置2到4的每行的数字复制到位置8到10

使用shell脚本将位置2到4的每行的数字复制到位置8到10
EN

Stack Overflow用户
提问于 2020-09-16 03:24:47
回答 2查看 29关注 0票数 0

我正在尝试创建一个shell脚本,它读取下面的输入文件,并将每行索引2到4处的数字附加到每行索引8到10处。

输入文件(input.txt)

代码语言:javascript
复制
1234567
1278980
54279

输出文件:(请注意,每行位置2-4的数字已附加到同一行的8-10位置) Output.txt

代码语言:javascript
复制
1234567234
1278980278
54279  427

我当前的代码如下所示。在这段代码中,我只能提取每行索引2到4处的数字,但不能将其附加到同一文件中每行的索引8到10。

代码语言:javascript
复制
awk '{val=substr($0,2,3)} (val+0)>=0 {print $0}' input.txt  > filtered_digits.txt

有人可以帮助我在相同的脚本代码中实现这一点吗?

感谢所有人。

EN

回答 2

Stack Overflow用户

发布于 2020-09-16 03:33:11

它只是:

代码语言:javascript
复制
awk '{val=substr($0,2,3)} {print $0 val}'
awk '{print $0 substr($0,2,3)}'
# even just (with nonempty input):
awk '$0 = $0 substr($0,2,3)'

或者使用sed:

代码语言:javascript
复制
sed 's/\(..\(...\)..\)/\1\2/'

,但是如果我有一行只有4个字符

您可以将$0与最多7个空格左对齐:

代码语言:javascript
复制
awk '$0 = sprintf("%-7s", $0) substr($0,2,3)'
票数 0
EN

Stack Overflow用户

发布于 2020-09-16 04:43:32

当您想格式化您的输出时,如

代码语言:javascript
复制
printf "%-7s%s\n" 12345 123
12345  123

您可以使用

代码语言:javascript
复制
sed -r 's/.(..).*/printf "%-7s%s\n" "&" "\1"/e' input.txt
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63908591

复制
相关文章

相似问题

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