删除一行中的第一个空格

删除一行中的第一个空格

如何仅删除下面一行中的第一个空格而不删除同一行中的其他空格?

输入示例:

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

您可以删除该行中的任何空格并保留任何一个

假设:输入文件必须包含:

  1. 没有前导空格
  2. 没有连续的空格
  3. 没有标签
  4. 总共少于七个空格

如果任何一个假设被违反,结果不会是正确的

答案3

您可以在 Ex 模式下使用 Vim:

ex -sc '%s/ //|x' file
  1. %选择所有行

  2. s代替

  3. x保存并关闭

答案4

这是一个非常简单的问题。

sed -i 's/ //' /path/to/file

尝试这个命令,不要添加s在 sed 表达式的末尾。

它只会删除每行的第一个空格。

相关内容