簡體   English   中英

模式匹配,並使用sed在文本文件的行尾或行首添加行

[英]pattern match and add line at the end or start of a line in a text file using sed

我有一個文本文件,其中包含:

First link https://cdn.shopify.com/s/files/1/0151/0741/products/2c60070615ceaa44c934ca876fe4ccc0_f304e840-bb1d-4bcf-a993-d966c0b99ae3.jpeg?v=1452842355 
Second link https://cdn.shopify.com/s/files/1/0151/0741/products/549542c704da78a0e5208b9f8c2cd26e.jpeg?v=1452842263
Third link https://cdn.shopify.com/s/files/1/0151/0741/products/2c60070615ceaa44c934ca876fe4ccc0_70e7e6b9-bedd-40a7-b322-542facf94c05.jpeg?v=1452842230
Fourth link https://cdn.shopify.com/s/files/1/0151/0741/products/2c60070615ceaa44c934ca876fe4ccc0_5485fd04-c852-4fd7-b142-92595329568a.jpeg?v=1452841841
lst link https://cdn.shopify.com/s/files/1/0151/0741/products/2c60070615ceaa44c934ca876fe4ccc0_fb613b45-fbbb-4b6d-b9c0-45d7f069879e.jpeg?v=1452841831

我想匹配最后一個網址,並使用sed在行的開頭或結尾附加一個單詞。

但這是行不通的。 救命

命令的輸出給出此錯誤。

$sed -e 's_https://cdn.shopify.com/s/files/1/0151/0741/products/2c60070615ceaa44c934ca876fe4ccc0_f304e840-bb1d-4bcf-a993-d966c0b99ae3.jpeg\?v=1452842355 .*_& NOTFOUND_'
sed: -e expression #1, char 148: unknown option to `s'

不幸的是, sed不是執行此任務的最佳工具。 如果沒有事先進行所有轉義,就無法以sed模式傳遞普通的非正則表達式字符串。

最好使用awk

awk 'index($0, "https://cdn.shopify.com/s/files/1/0151/0741/products/2c60070615ceaa44c934ca876fe4ccc0_fb613b45-fbbb-4b6d-b9c0-45d7f069879e.jpeg?v=1452841831"){
 $0 = $0 " NOTFOUND"} 1' file

index函數只是在記錄中搜索給定URL的存在,如果找到,則會在末尾附加" NOTFOUND字符串" NOTFOUND

等效的sed將是這樣的:

sed 's~https://cdn\.shopify\.com/s/files/1/0151/0741/products/2c60070615ceaa44c934ca876fe4ccc0_fb613b45-fbbb-4b6d-b9c0-45d7f069879e\.jpeg?v=1452841831.*~& NOTFOUND~' file

如您所見,它要求您轉義所有DOT並選擇輸入字符串中不存在的正則表達式定界符。

當字符顯示在URL中時,為什么要使用_作為正則表達式分隔符?

[..snip..]/products/2c60070615ceaa44c934ca876fe4ccc0_fb613b45-fb
                                                    ^---

您實際上在做

s/.../f

fs/正則表達式的未知修飾符。

該模式具有下划線...fe4ccc0_f304... ,用作下划線命令的定界符。 使用其他在模式或替換字符串中沒有出現轉義的定界符。

嘗試使用| 字符代替,如s|http://... .*$|& NOT_FOUND|

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM