输入:
IN22FDX_S1P_WWWWBBBBMMMCCCC_ffg_pre_0.59_0_.72_-40_nominal
输出:
IN22FDX_S1P_WWWWBBBBMMMCCCC ffg_pre_0.59_0_.72_-40_nominal
# ^
# space instead of underscore
如何将上面的行转换为两列(删除它们之间的一个下划线)?第一个字是固定长度的IN22FDX_S1P_WWWWBBBBMMMCCCC
。
答案1
如果第一列具有固定大小,
sed 's/./ /28'
将第 28 个字符替换为空格。
假设数据存储在文件中,您可以使用 sed 就地编辑它。
sed -i.bak 's/./ /28' input_file
注意.bak
我添加到-i
选项中;它指示 sedinput_file.bak
使用提供的后缀创建备份文件。后缀是可选的。
答案2
GNUcut
解决方案:
s="IN22FDX_S1P_WWWWBBBBMMMCCCC_ffg_pre_0.59_0_.72_-40_nominal"
cut -c 1-27,29- --output-delimiter=' ' <<<"$s"
-c
- 选择字符
输出:
IN22FDX_S1P_WWWWBBBBMMMCCCC ffg_pre_0.59_0_.72_-40_nominal