Command-Line

字元串處理:刪除前綴並擷取雙引號前的所有字元

  • April 6, 2022

我有這個數據

photo for Kurtis Hardy" data-
photo for Paul Hoven" data-sr

我想過濾這個只得到中間的名字。我用這個命令來獲取那些行

cat File| grep -E -o 'photo for.{0,20}'

這裡不需要貓。讓貓一個人呆著。

我假設每個名字都在“照片”之後開始,並以第一個“結束”,如您的範例所示。如果不是這種情況,請告訴我。否則我們將需要更多地考慮什麼是“名字” .

grep -E 'photo for [^"]{0,20}"' File | sed 's/photo for \([^"]\{0,20\}\)".*/\1/'

或者更簡單:

sed -n 's/photo for \([^"]\{0,20\}\)".*/\1/p' File

perl

cat File | perl -nE'm/^photo for ([^"]+)/ && say $1'

或者

perl -nE'm/^photo for ([^"]+)/ && say $1' File

這會去除前綴photo for 並擷取所有字元,直到".

引用自:https://unix.stackexchange.com/questions/698231