我一直在這個工作了幾天,似乎無法弄清楚,我希望有人可以幫忙。我寧願可以在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).*'
我很樂意爲此提供任何幫助。
肖恩
你也可以使用'grep'。說'grep -Po'。*?\。jpg'file.txt' – devnull
這個命令不起作用。它使得.jpg後面的所有內容都變成了新的一行,它給了我8個.jpg文件名,而不是位於該行開始處的第2個.jpg文件名,與第一個匹配的.jpg。 – user3552596
我沒有意識到命令中的錨點缺失。它應該是'grep -Po'^。*?\。jpg'file.txt' – devnull