gpt4 book ai didi

bash - 如何在文件中特定字段的单词字符之间插入空格

转载 作者:行者123 更新时间:2023-11-29 09:18:30 25 4
gpt4 key购买 nike

我有一个包含 100000 行这样的文件

1 0110100010010101
2 1000010010111001
3 1000011001111000
10 1011110000111110
123 0001000000100001

我想知道如何通过在字符之间添加空格来有效地仅显示第二个字段。

0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 1
1 0 0 0 0 1 0 0 1 0 1 1 1 0 0 1
1 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0
1 0 1 1 1 1 0 0 0 0 1 1 1 1 1 0
0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1

一种解决方案是使用 awk 获取第二列,然后使用 sed 添加空格。但由于文件太长,我想避免使用管道。然后我想知道我是否可以仅使用 awk 来做到这一点。

提前致谢

最佳答案

这样可以吗?

awk '{gsub(/./,"& ",$2);print $2}' yourFile

示例

kent$  echo "1 0110100010010101
2 1000010010111001
3 1000011001111000"|awk '{gsub(/./,"& ",$2);print $2}'
0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 1
1 0 0 0 0 1 0 0 1 0 1 1 1 0 0 1
1 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0

更新

第一列中超过 2 位数字将不起作用?我没听懂:

kent$  echo "133 0110100010010101
233 1000010010111001
333 1000011001111000"|awk '{gsub(/./,"& ",$2);print $2}'
0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 1
1 0 0 0 0 1 0 0 1 0 1 1 1 0 0 1
1 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0


gsub(/./,"& ", $2)

1 /./ match any single character
2 "& " & here means the matched string, in this case, each character
3 $2 column 2

so it means, replace each character in 2nd column into the character itself + " ".

关于bash - 如何在文件中特定字段的单词字符之间插入空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12746906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com