使用 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
我有一个文件,内容如下 - @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