假设我有一个结构如下的文件:
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
。)