将行转换为两列

Roo*_*asa 2 sed awk text-processing

输入:

IN22FDX_S1P_WWWWBBBBMMMCCCC_ffg_pre_0.59_0_.72_-40_nominal
Run Code Online (Sandbox Code Playgroud)

输出:

IN22FDX_S1P_WWWWBBBBMMMCCCC ffg_pre_0.59_0_.72_-40_nominal
#                          ^
#                space instead of underscore
Run Code Online (Sandbox Code Playgroud)

如何将上面的行转换为两列(删除它们之间的一个下划线)?第一个字是固定长度的IN22FDX_S1P_WWWWBBBBMMMCCCC

Phi*_*pos 15

如果第一列有固定大小,

sed 's/./ /28'
Run Code Online (Sandbox Code Playgroud)

用空格替换第 28 个字符。

假设数据存储在文件中,您可以使用 sed 就地编辑它。

sed -i.bak 's/./ /28' input_file
Run Code Online (Sandbox Code Playgroud)

注意.bakI 添加到-i选项中;它指示 sedinput_file.bak使用提供的后缀制作备份文件。后缀是可选的。


Rom*_*est 5

GNUcut解决方案:

s="IN22FDX_S1P_WWWWBBBBMMMCCCC_ffg_pre_0.59_0_.72_-40_nominal"
cut -c 1-27,29- --output-delimiter=' ' <<<"$s"
Run Code Online (Sandbox Code Playgroud)
  • -c - 选择字符

输出:

IN22FDX_S1P_WWWWBBBBMMMCCCC ffg_pre_0.59_0_.72_-40_nominal
Run Code Online (Sandbox Code Playgroud)