使用 sed 跳过一行的一部分

Skipping a part of a line using sed

我有一个文件,内容如下 - @1: 00001109 每行的格式相同。我希望最终输出为 @1: 00 00 11 09.

我在sed中使用命令每2个字符引入一个space - sed 's/.\{2\}/& /g'。但这也会给我 spaces 在冒号之前的部分,我想避免。谁能建议如何进行?

能否请您尝试使用显示的示例进行以下、编写和测试。

awk '{gsub(/../,"& ",);sub(/ +$/,"")} 1' Input_file

解释: 首先通过在gsub 是全局替换以在全局执行它)。完成此操作后,使用单个 sub 将最后一个 space 替换为 NULL 以避免最后一行出现 spaces。



sed:

sed -E 's/[0-9]{2}/& /g;s/ +$//'  Input_file

解释: 将每对数字全局替换为相同的值并向其附加 space。然后用 NULL.

替换行(由先前替换添加)的最后 space

这可能对你有用 (GNU sed):

sed 's/[0-9][0-9]\B/& /g' file

在一个单词中的一对数字后插入一个space。

你可以使用纯 bash:

for line in "$(<your_file.txt)"; do
    first=`echo $line | cut -d' ' -f1`" "
    last=`echo $line | cut -d' ' -f2`
    for char in `seq 0 2 ${#last}`; do
        first+=${last:$char:2}" "
    done;
done;

如果perl恰好是你的选择,怎么样:

perl -pe '1 while s/(\d+)(\d\d)/ /g' file