Unix 使用sed删除以正斜杠开头的标题行的一部分
我正在尝试使用sed来调整文件的标题行,我已经查看了很多以前的帖子,但迄今为止我在这些帖子的基础上所做的任何尝试都没有帮助。下面是: 我在mac OS上使用终端, 我有一个标题行如下的文件:以Unix 使用sed删除以正斜杠开头的标题行的一部分,unix,sed,header,Unix,Sed,Header,我正在尝试使用sed来调整文件的标题行,我已经查看了很多以前的帖子,但迄今为止我在这些帖子的基础上所做的任何尝试都没有帮助。下面是: 我在mac OS上使用终端, 我有一个标题行如下的文件:以 >KeepThis_text_VariableNumbersHere /LotsOFText/Here to get rid of." 我想要: >KeepThis_text_VariableNumbersHere 所有标题行都以“结尾”,但标题行中也有引号 我使用sed尝试了许多变体,以
>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,如果您喜欢上面的第一个回答,那么您需要接受它。这可以通过单击该答案旁边的复选标记来完成。