我知道文件中的行号,我想保留第一个单词并删除其余单词直到行尾。如何使用 sed 执行此操作?所以可以说,我想转到文件中的第 10 行,如下所示 -
好词“废话”\
我想要的是
好词
我试过这个 - sed 's/([az] )。/\1/'
但这会在文件的所有行上执行。我只希望它在一个指定的行上。
我知道文件中的行号,我想保留第一个单词并删除其余单词直到行尾。如何使用 sed 执行此操作?所以可以说,我想转到文件中的第 10 行,如下所示 -
好词“废话”\
我想要的是
好词
我试过这个 - sed 's/([az] )。/\1/'
但这会在文件的所有行上执行。我只希望它在一个指定的行上。
您可以使用 grep 或 awk 仅抓取一行,然后将其通过管道传输到 sed (如果 grep 或 awk 无法为您完成整个工作)以仅在一行上工作吗?我认为这里的关键是首先隔离那一行,然后担心从中提取一些东西。
如果“第一个单词”的意思是“直到第一个空格的所有内容”,并且如果“在文件本身中保留此更改”的意思是您不介意创建一个与前一个文件同名的新文件,如果你有一个sed
支持-i
,你可能可以这样做:
sed -i '10s/ .*//' input-file
如果您想对单词的定义更加严格,可以使用'10s/\([a-z]*\).*/\1/'
使用awk
awk 'NR==10 {print $1}' file
goodword