Unix 使用sed删除以正斜杠开头的标题行的一部分

Unix 使用sed删除以正斜杠开头的标题行的一部分,unix,sed,header,Unix,Sed,Header,我正在尝试使用sed来调整文件的标题行,我已经查看了很多以前的帖子,但迄今为止我在这些帖子的基础上所做的任何尝试都没有帮助。下面是: 我在mac OS上使用终端, 我有一个标题行如下的文件:以 >KeepThis_text_VariableNumbersHere /LotsOFText/Here to get rid of." 我想要: >KeepThis_text_VariableNumbersHere 所有标题行都以“结尾”,但标题行中也有引号 我使用sed尝试了许多变体,以

我正在尝试使用sed来调整文件的标题行,我已经查看了很多以前的帖子,但迄今为止我在这些帖子的基础上所做的任何尝试都没有帮助。下面是: 我在mac OS上使用终端, 我有一个标题行如下的文件:以

>KeepThis_text_VariableNumbersHere /LotsOFText/Here to get rid of."
我想要:

>KeepThis_text_VariableNumbersHere
所有标题行都以“结尾”,但标题行中也有引号

我使用sed尝试了许多变体,以下是一些:

 sed -e 's/^\/*.*//' input.file > output.file  #this removed everything

行,这很好,但去掉了整个标题行

sed -e 's/>KeepThis_Text_*.* *.*”/>KeepThis_Text_*.*\//' input.file > output.file #This did not change anything

谢谢您的建议!

我将使用捕获所有内容,从
开始,包括捕获组中空格前的所有内容,后跟
/
。只保留捕获组,并丢弃剩余文本,如下所示:

sed 's/\(>[^\/]\+\) .*/\1/' input.txt
sed -r '1s/(>[^/]+) .*/\1/' input.txt
使用扩展正则表达式,使用
-r
选项,它看起来更干净:

sed -r 's/(>[^\/]+) .*/\1/' input.txt
我不确定标题行对您是否意味着第一行。如果您真的是指第一行,请将
s
命令限制在第一行,如下所示:

sed 's/\(>[^\/]\+\) .*/\1/' input.txt
sed -r '1s/(>[^/]+) .*/\1/' input.txt

如果您只想更改第一行,请考虑您的命令(<代码> S///<代码>):

或寻址以
>
开头的所有行:

sed -re '/^>/s/\/\w+//g'
或者,如果您想删除从
/
到行尾的所有内容:

sed -re '/^>/s/\/.*//g'

如果只保留正斜杠前面的零件,则可以执行以下操作:

sed -e 's-/.*--'
该命令的分隔符不限于
/
,它只是一种约定。在这里,我使用
-
作为命令分隔符。然后,该命令是:用空文本替换斜杠后面的任何内容。

谢谢

awk -F/ 'NR==1{print $1;next}1' file

仅修改第一行,将所有内容打印到
/

cut-d/-f1
为您提供了第一部分,但标题行是什么意思?仅文件中的第一行或所有以
开头并以
结尾的行?或者它们必须有两条斜线吗?
>我是一个有两条//和一条斜线的标题行dot.
Hooray,这非常有效,非常感谢!我知道我必须靠近,但在使用所有正向斜杠时被搞砸了,很高兴知道以后的工作。感谢你解释你在这里做了什么,我能够用上面的第一个回复使它工作,但你的帖子有一些有用的信息供将来使用sed!@Carla Btw,如果您喜欢上面的第一个回答,那么您需要接受它。这可以通过单击该答案旁边的复选标记来完成。