string - sed 打印第 N 个字符

标签 string bash shell sed

我有一个长度始终为 5 个字符的字符串列表。将每行的第一个、第三个和第五个字符(包括空格)转换为单独的字符串的最佳方法是什么?

输入:

c   c
8   8
4   4
3   3
1   1
4   4
9   9
8 | c
  > 4
0   0
e | 5
6 | a
3   3
9 | c
b <  
1   1
b | 0
d <  
4   4
5 | 7
c   c
  > 3
.   .
1 | c
o   o

输出:

c8431498 0e639b1bd45c .1o
c843149c405a3c 10 47c3.co
       |> || |< |  | > |

我在使用 sed 捕获组方面取得了一些成功,但它忽略了尾随空格。

sed -e "s/^.*\(.\)$/\1/"

编辑:阐明我还需要包含空格并且字符串包含一个点

最佳答案

使用 GNU awk:

awk 'BEGIN{FS="";a="";b="";c="";}{a=a$1; b=b$3; c=c$5;}END{print a ORS c ORS b}' filename

输出:

c8431498 0e639b1bd45c 
c843149c405a3c 10 47c3
       |> || |< |< | >

关于string - sed 打印第 N 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48496532/

相关文章:

Python 非严格搜索字符串中的文本

linux - 如何优雅地将 runmqsc 命令的输出放入适当的 PHP 变量中?

file - 如何将目录中的所有文件名保存到 bash 中的文本文件?

shell - $$ 在 KornShell

c# - 使用 C# MongoDB 驱动程序的嵌套数组 $pull 查询

string - 有什么方法可以在打印语句中没有 7、-48 .... 等的情况下以漂亮的方式显示输出?

php - 在文本 block 中查找并替换多个不同的关键字

php - 合并两个正则表达式以截断字符串中的单词

bash - 从文件名中删除 "!"、 "["和 "]"

bash - 无法在我的脚本中发现错误,其行为与预期不符