如何仅删除下面一行中的第一个空格而不删除同一行中的其他空格?
输入示例:
2015-04-18 10:21:59 10 05430 -9999 -9999 000000000000
示例输出:
2015-04-1810:21:59 10 05430 -9999 -9999 000000000000
答案1
您可以sed
为此使用:
sed 's/ //' infile >outfile
这会将替换应用于文件的所有行infile
,将第一个空格字符替换为空(即删除它)。输出存储在文件中outfile
。使用sed 's/ //N'
,其中N
是 1 到 9 之间的整数,您可以选择要删除的空格。
如果该行位于 shell 变量中,您可以使用
var="${var/ /}"
这使用${parameter/pattern/string}
参数扩展 inbash
来执行与命令相同的操作sed
,但针对 中的值$var
。在此示例中,生成的字符串随后存储回$var
.
答案2
使用awk
:
> awk '{print $1$2,$3,$4,$5,$6,$7}' yourfile > outputfile
输出:
> cat outputfile
2015-04-1810:21:59 10 05430 -9999 -9999 000000000000
您可以删除该行中的任何空格并保留任何一个
假设:输入文件必须包含:
- 没有前导空格
- 没有连续的空格
- 没有标签
- 总共少于七个空格
如果任何一个假设被违反,结果不会是正确的
答案3
您可以在 Ex 模式下使用 Vim:
ex -sc '%s/ //|x' file
%
选择所有行s
代替x
保存并关闭
答案4
这是一个非常简单的问题。
sed -i 's/ //' /path/to/file
尝试这个命令,不要添加s在 sed 表达式的末尾。
它只会删除每行的第一个空格。