繁体   English   中英

如何提取从一行开始到特定字符串的所有内容?

[英]How do I extract everything from the start of a line to a specific string?

我已经做了好几天了,似乎无法弄清楚,我希望有人可以提供帮助。 我更喜欢可以在linux命令行中运行的答案,比如grep,sed,awk等。

假设我有一个名为“file.txt”的文件,内容如下:

1234jpg.jpg a.jpgbjpgy.jpg uyapss.jpg>"sdf
5678jpg.jpga.jpgbjpgy.jpg uyapss.jpg>"sdf
ABC not this line

我想要做的是将所有内容提取到“.jpg”,这样可以得到以下结果:

1234jpg.jpg
5678jpg.jpg

我尝试过的一些命令(在其他数百种变体中)是:

cat file.txt | sed 's/\(^.*\.jpg\)/\1/'

cat file.txt | sed -e 's/^[^"jpg"]\(.*\.jpg\)/\1/'

cat file.txt | egrep '^([^jpg]*[jpg])'

cat file.txt | grep -Po '\(\K.*jpg\)'

cat file.txt | grep -Po '(?<=\.jpg).*'

我很乐意为此提供帮助。

肖恩

这可能适合你(GNU sed):

sed 's/\(\.jpg\).*/\1/' file

要么:

sed -r 's/(\.jpg).*/\1/' file

要么:

sed 's/\.jpg.*/.jpg/' file

尝试这个:

$ awk -F"[.]jpg" 'NF>1{print $1".jpg"}' file
1234jpg.jpg
5678jpg.jpg

我们使用.jpg作为字段分隔符来分割线条。 我们只选择那些包含多个这样的文件的行并打印第一个元素。 我们打印扩展名,以便输出作为您想要的输出返回。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM