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)
如您所见,每个字符由一个空格分隔。每个组由两个空格分隔。使用sed
I 需要删除单个空格,并将双空格转换为单个空格。
文本 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)
上面代码的结构与这里的需要没有区别。我只是寻求一种轻量级的方法来进行上述有关空格的文本操作。如果之前有人问过这个问题,我很抱歉。我在查询中找不到它。
这应该有效:
sed 's/ \([^ ]\)/\1/g'
Run Code Online (Sandbox Code Playgroud)
您还可以将脚本的整个最后一行替换为:
sed -n '1s/ \([^ ]\)/\1/gp' "$FILE"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
776 次 |
最近记录: |