如何从特定行中删除空格?

如何从特定行中删除空格?

假设我有一个结构如下的文件:

X序列1是这样的

ABCDE FGH HIJ

X 序列 2 是这样的

ABCDE FGH HIJ

我该如何有条件地删除空格?我知道下面的代码片段将删除所有空格。我该如何只删除以 X 开头的行上的空格?

sed 's/ //g' 

我也见过

 '/^startswith

已经被使用,但似乎无法将它们结合在一起工作。

谢谢。

答案1

awk,一般语法是地址后跟代码块,其中“地址”是行号或/regex/逗号分隔的from,to范围。

因此,如果您想匹配以 X 开头的行并对其应用替换:

/^X/ { gsub(/ /, ""); } { print; }

(第二个块没有地址,因此它打印所有行。)

sed 的语法类似,只是命令更短(s/…/…/用于替换)并且单命令块不需要括号。因此,可以使用以下方法在 sed 中执行相同的任务:

/^X/ { s/ //g; }

或更短的

/^X/ s/ //g

(Sed 也不需要显式的“打印”块,因为打印已经是默认设置,除非给出 -n。但它有一个打印命令p。)

相关内容