0

我知道文件中的行号,我想保留第一个单词并删除其余单词直到行尾。如何使用 sed 执行此操作?所以可以说,我想转到文件中的第 10 行,如下所示 -

好词“废话”\

我想要的是
好词

我试过这个 - sed 's/([az] )。/\1/'
但这会在文件的所有行上执行。我只希望它在一个指定的行上。

4

3 回答 3

0

您可以使用 grep 或 awk 仅抓取一行,然后将其通过管道传输到 sed (如果 grep 或 awk 无法为您完成整个工作)以仅在一行上工作吗?我认为这里的关键是首先隔离那一行,然后担心从中提取一些东西。

于 2013-09-19T23:32:18.693 回答
0

如果“第一个单词”的意思是“直到第一个空格的所有内容”,并且如果“在文件本身中保留此更改”的意思是您不介意创建一个与前一个文件同名的新文件,如果你有一个sed支持-i,你可能可以这样做:

sed -i '10s/ .*//' input-file

如果您想对单词的定义更加严格,可以使用'10s/\([a-z]*\).*/\1/'

于 2013-09-19T23:49:54.580 回答
0

使用awk

awk 'NR==10 {print $1}' file
goodword
于 2013-09-20T05:42:56.553 回答