如何使用sed从给定文本打印部分文本

时间:2014-06-10 13:09:10

标签: sed

如何使用sed?

从以下输入文件打印部分文本

输入数据文件

ABC mobile - ABC, Inc
XYZ123 mobile - XYZ123 company
TD Ameritrade Mobile Trader - TD Ameritrade Mobile, LLC

预期产出

ABC, Inc
XYZ123 Company
TD Ameritrade Mobile, LLC

3 个答案:

答案 0 :(得分:4)

只需删除短划线和空格中的所有内容:

sed 's/.*- //'

答案 1 :(得分:1)

显然你想打印-

中的所有内容

为此,您可以使用cut

$ cut -d'-' -f2 file
 ABC, Inc
 XYZ123 company
 TD Ameritrade Mobile, LLC

但它显示了破折号后的领先空间。所以最好去awk

$ awk -v FS="- " '{print $2}' file
ABC, Inc
XYZ123 company
TD Ameritrade Mobile, LLC

-v FS="- "将字段分隔符设置为-(注意空格),然后{print $2}打印第二个块。

sed

$ sed 's/^[^-]*- //' file
ABC, Inc
XYZ123 company
TD Ameritrade Mobile, LLC

^[^-]*-匹配从行首(^)到第一个破折号,然后是空格的所有内容。然后它用一个空字符串替换它,所以实际上它删除的所有内容都是-

答案 2 :(得分:1)

使用反向引用:

sed 's/.*-\(.*\)/\1/'