如何使用sed
从文件的第一行删除最后一个字符?
答案 0 :(得分:8)
例如,你可以使用它:
sed '1 s/.$//' file
1
表示我们要执行操作的行。s/text/replacement/
,我们会查找.
后跟$
的任何字符,表示行尾。因此,我们在行尾之前查找最后一个字符,并将其替换为空。也就是说,我们删除了该行的最后一个字符。要编辑文件,您可以使用-i.bak
。
$ cat a
hello this is some text
and this is something else
$ sed '1 s/.$//' a
hello this is some tex
and this is something else
为了好玩,让我们看看如何使用awk
完成此操作:
awk -v FS= -v OFS= 'NR==1{NF=NF-1}1' file
这会将输入和输出字段分隔符(FS
,OFS
)设置为空(与BEGIN{FS=OFS=""}
相同),因此每个字符都是一个字段。基于此,当记录为1时(在这种情况下,当我们在第1行时),减少字段数(NF
),以便最后一个字符"丢失"。然后,1
是一个真正的条件,使awk
执行默认操作:{print $0}
。