使用 sed 进行自定义字符串空间操作

Yok*_*kai 6 bash bash-scripting

以下命令:

head -n 1 $FILE | tail -n 1
Run Code Online (Sandbox Code Playgroud)

从 的第一行拉出文本$FILE。中每一行的格式$FILE如下:

1 2 3 4  2 3  3 4 5  4 5 6 7 8 9
Run Code Online (Sandbox Code Playgroud)

如您所见,每个字符由一个空格分隔。每个组由两个空格分隔。使用sedI 需要删除单个空格,并将双空格转换为单个空格。

文本 in$FILE是由嵌套在另一个 for 循环中的 for 循环创建的。因此,在嵌套运行后,每行上的文本数据都被重定向>>$FILE主 for 循环。文本字符串中的每个字符/数字都是嵌套 for 循环完成一次的结果。然后主 for 循环将嵌套的 for 循环的输出发送到$FILE.

所以伪代码的一个例子是:

for i in $(seq 1 $RANDOM)
do
    for n in {1..10}
    do
        $do_something
    done

$do_something_else
done >> $FILE

head -n 1 $FILE | tail -n 1 | (sed command here)
Run Code Online (Sandbox Code Playgroud)

上面代码的结构与这里的需要没有区别。我只是寻求一种轻量级的方法来进行上述有关空格的文本操作。如果之前有人问过这个问题,我很抱歉。我在查询中找不到它。

per*_*eal 6

这应该有效:

sed 's/ \([^ ]\)/\1/g'
Run Code Online (Sandbox Code Playgroud)

您还可以将脚本的整个最后一行替换为:

sed -n '1s/ \([^ ]\)/\1/gp' "$FILE"
Run Code Online (Sandbox Code Playgroud)