我有一个长度始终为 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/