使用sed从正斜杠

时间:2015-10-06 17:03:19

标签: unix sed header

我正在尝试使用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/^\/*.*"//' input.file > output.file #this kept non-header 

行,这很好,但摆脱了整个标题行

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

感谢您的任何建议!

4 个答案:

答案 0 :(得分:1)

如果您只想更改第1行,请考虑寻址您的命令(s///):

sed -re '1s/\/\w+//g'

或解决以>开头的所有行:

sed -re '/^>/s/\/\w+//g'

或者如果你想放弃从/到行尾的所有内容:

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

答案 1 :(得分:1)

如果您只想保留正斜杠之前的部分,则以下内容将执行:

sed -e 's-/.*--'

命令的分隔符不限于/,它只是一个约定。在这里,我使用-作为命令分隔符。然后命令是:将斜杠后面的任何内容替换为带有空文本的行尾。

答案 2 :(得分:0)

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

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

使用-r选项使用扩展正则表达式看起来更干净:

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

我不确定标题行是否意味着第一行。如果您的意思是第一行,请将s命令限制为第一行,如下所示:

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

答案 3 :(得分:0)

要求救援!

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

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