文本處理之sed

簡介

  • sed 是一種在線編輯器,它一次處理一行內(nèi)容。處理時逐纬,把當(dāng)前處理的行存儲在臨時緩沖區(qū)中,稱為“模式空間”(pattern space)矢沿,接著用sed命令處理緩沖區(qū)中的內(nèi)容滥搭,處理完成后,把緩沖區(qū)的內(nèi)容送往屏幕捣鲸。接著處理下一行论熙,這樣不斷重復(fù),直到文件末尾摄狱。文件內(nèi)容并沒有 改變脓诡,除非你使用重定向存儲輸出。Sed主要用來自動編輯一個或多個文件媒役;簡化對文件的反復(fù)操作祝谚;編寫轉(zhuǎn)換程序等。

參數(shù)

[root@www ~]# sed [-nefr] [動作]

選項與參數(shù):
-n :使用安靜(silent)模式酣衷。在一般 sed 的用法中交惯,所有來自 STDIN 的數(shù)據(jù)一般都會被列出到終端上。但如果加上 -n 參數(shù)后穿仪,則只有經(jīng)過sed 特殊處理的那一行(或者動作)才會被列出來席爽。
-e:直接在命令列模式上進行 sed 的動作編輯;
-f :直接將 sed 的動作寫在一個文件內(nèi)啊片, -f filename 則可以運行 filename 內(nèi)的 sed 動作只锻;
-r :sed 的動作支持的是延伸型正規(guī)表示法的語法。(默認是基礎(chǔ)正規(guī)表示法語法)
-i :直接修改讀取的文件內(nèi)容紫谷,而不是輸出到終端齐饮。

動作說明: [n1[,n2]]function
n1, n2 :不見得會存在,一般代表『選擇進行動作的行數(shù)』笤昨,舉例來說祖驱,如果我的動作是需要在 10 到 20 行之間進行的,則『 10,20[動作行為] 』

function:
a :新增瞒窒, a 的后面可以接字串捺僻,而這些字串會在新的一行出現(xiàn)(目前的下一行)~
c :取代, c 的后面可以接字串崇裁,這些字串可以取代 n1,n2 之間的行匕坯!
d :刪除,因為是刪除啊寇壳,所以 d 后面通常不接任何咚咚醒颖;
i :插入, i 的后面可以接字串壳炎,而這些字串會在新的一行出現(xiàn)(目前的上一行)泞歉;
p :列印逼侦,亦即將某個選擇的數(shù)據(jù)印出。通常 p 會與參數(shù) sed -n 一起運行~
s :取代腰耙,可以直接進行取代的工作哩榛丢!通常這個 s 的動作可以搭配正規(guī)表示法!例如 1,20s/old/new/g 就是啦挺庞!

范例

1 p命令 ->打印
命令p用于顯示模式空間的內(nèi)容晰赞。默認情況下,sed把輸入行打印在屏幕上选侨,選項-n用于取消默認的打印操作掖鱼。當(dāng)選項-n和命令p同時出現(xiàn)時,sed可打印選定的內(nèi)容。

sed '/my/p' datafile

  • 默認情況下援制,sed把所有輸入行都打印在標準輸出上戏挡。如果某行匹配模式my,p命令將把該行另外打印一遍晨仑。

sed -n '/my/p' datafile

  • 選項-n取消sed默認的打印褐墅,p命令把匹配模式my的行打印一遍。
2 d命令 ->刪除

命令d用于刪除輸入行洪己。sed先將輸入行從文件復(fù)制到模式空間里妥凳,然后對該行執(zhí)行sed命令,最后將模式空間里的內(nèi)容顯示在屏幕上答捕。如果發(fā)出的是命令d逝钥,當(dāng)前模式空間里的輸入行會被刪除,不被顯示噪珊。

sed '$d' datafile

  • 刪除最后一行晌缘,其余的都被顯示

sed '/my/d' datafile

  • 刪除包含my的行齐莲,其余的都被顯示
3 s命令 ->替換

sed 's/^My/You/g' datafile

  • 命令末端的g表示在行內(nèi)進行全局替換痢站,也就是說如果某行出現(xiàn)多個My,所有的My都被替換為You选酗。

sed -n '1,20s/My$/You/gp' datafile

  • 取消默認輸出阵难,處理1到20行里匹配以My結(jié)尾的行,把行內(nèi)所有的My替換為You芒填,并打印到屏幕上呜叫。

sed 's#My#Your#g' datafile

  • 緊跟在s命令后的字符就是查找串和替換串之間的分隔符。分隔符默認為正斜杠殿衰,但可以改變朱庆。無論什么字符(換行符、反斜線除外)闷祥,只要緊跟s命令娱颊,就成了新的串分隔符。
4 e選項 ->編輯

-e是編輯命令,用于sed執(zhí)行多個編輯任務(wù)的情況下箱硕。在下一行開始編輯前拴竹,所有的編輯動作將應(yīng)用到模式緩沖區(qū)中的行上。

sed -e '1,10d' -e 's/My/Your/g' datafile

  • 選項-e用于進行多重編輯剧罩。第一重編輯刪除第1-3行栓拜。第二重編輯將出現(xiàn)的所有My替換為Your。因為是逐行進行這兩項編輯(即這兩個命令都在模式空間的當(dāng)前行上執(zhí)行)惠昔,所以編輯命令的順序會影響結(jié)果幕与。
5 r命令 ->讀

r命令是讀命令。sed使用該命令將一個文本文件中的內(nèi)容加到當(dāng)前文件的特定位置上镇防。

sed '/My/r introduce.txt' datafile

  • 如果在文件datafile的某一行匹配到模式My纽门,就在該行后讀入文件introduce.txt的內(nèi)容。如果出現(xiàn)My的行不止一行营罢,則在出現(xiàn)My的各行后都讀入introduce.txt文件的內(nèi)容赏陵。
6 w命令

sed -n '/hrwang/w me.txt' datafile

7 a 命令

a\ 命令是追加命令,追加將添加新文本到文件中當(dāng)前行(即讀入模式緩沖區(qū)中的行)的后面饲漾。所追加的文本行位于sed命令的下方另起一行蝙搔。如果要追加的內(nèi)容超過一行,則每一行都必須以反斜線結(jié)束考传,最后一行除外吃型。最后一行將以引號和文件名結(jié)束。

sed '/^hrwang/a\

hrwang and mjfan are husband
and wife' datafile

  • 如果在datafile文件中發(fā)現(xiàn)匹配以hrwang開頭的行僚楞,則在該行下面追加hrwang and mjfan are husband and wife
8 i 命令

i 命令是在當(dāng)前行的前面插入新的文本勤晚。

9 c 命令

sed使用該命令將已有文本修改成新的文本。

10 y命令

該命令與UNIX/Linux中的tr命令類似泉褐,字符按照一對一的方式從左到右進行轉(zhuǎn)換赐写。例如,y/abc/ABC/將把所有小寫的a轉(zhuǎn)換成A膜赃,小寫的b轉(zhuǎn)換成B挺邀,小寫的c轉(zhuǎn)換成C。

sed '1,20y/hrwang12/HRWANG^$/' datafile

  • 將1到20行內(nèi)跳座,所有的小寫hrwang轉(zhuǎn)換成大寫端铛,將1轉(zhuǎn)換成^,將2轉(zhuǎn)換成$。
  • 正則表達式元字符對y命令不起作用疲眷。與s命令的分隔符一樣禾蚕,斜線可以被替換成其它的字符。
11 q命令

q命令將導(dǎo)致sed程序退出狂丝,不再進行其它的處理换淆。

sed '/hrwang/{s/hrwang/HRWANG/;q;}' datafile

常用示例:

sed -i 's/\t/,/g' filename //把tab 替換成 “虚倒,”
cat filename | sed 's/[ ][ ]/,/g' cat lse | sed 's/\s+/,/g' 替換空格
cat lse | sed -e 's/[[:space:]][[:space:]]
/,/g' 如果空格與tab共存時用

1:把文件filename中的a字符換成A字符
sed -i "s/a/A/g" filename
2:替換為空格 將tab替換為空格
sed -i "s/\t/ /g" filename

二、實例
1)替換:s命令

sed -e 's/123/1234/' a.txt

將a.txt文件中所有行中的123用1234替換(-e表示命令以命令行的方式執(zhí)行产舞;參數(shù)s魂奥,表示執(zhí)行替換操作)

sed -e '1 s/12/45/' a.txt

把第一行的12替換成45

sed -n 's/^test/mytest/p' example.file

(-n)選項和p標志一起使用表示只打印那些發(fā)生替換的行。也就是說易猫,如果某一行開頭的test被替換成mytest耻煤,就打印它。(^這是正則表達式中表示開頭准颓,該符號后面跟的就是開頭的字符串)(參數(shù)p表示打印行)

sed -n 's/loveable/\1rs/p' example.file

love被標記為1哈蝇,所有l(wèi)oveable會被替換成lovers,而且替換的行會被打印出來攘已。需要將這條命令分解炮赦,s/是表示替換操作,love表示選中l(wèi)ove字符串样勃,loveable/表示包含loveable的行吠勘,loveable/\l表示love字符串標記為1,表示在替換過程中不變峡眶。rs/表示替換的目標字符串剧防。這條命令的操作含義:只打印替換了的行

sed 's#10#100#g' example.file

不論什么字符,緊跟著s命令的都被認為是新的分隔符辫樱,所以峭拘,“#”在這里是分隔符,代替了默認的“/”分隔符狮暑。表示把所有10替換成100

sed -i 's/now/right now/g' test_sed_command.txt

表示直接操作文件test_sed_command.txt鸡挠,將文件test_sed_command.txt中所有的now用right now替換。參數(shù)-i搬男,表示直接操作修改文件拣展,不輸出

echo 112.111 | sed -e 's/..*//g'

將小數(shù)點及之后的內(nèi)容清除,以上輸出是112(.表示匹配"."符號止后,之后跟著.表示1個到多個字符,如果只是.的話瞎惫,只會匹配"."字符,因為*號是0個到多個)

echo aaaa.mpg.bak | sed -e 's;.?..?..*;\1;g'

輸出:aaaa.mpg

sed 's/^wangpan/&19850715/' example.file

表示被替換換字符串被找到后译株,被替換的字符串通過&符號連接給出的字符串組成新字符傳替換被替換的字符串,所有以wangpan開頭的行都會被替換成它自已加19850715,變成wangpan19850715

2)選定行范圍挺益,逗號

sed -e '3,5 a4' a.txt

將a.txt文件中的3行到5行之間所有行的后面添加一行內(nèi)容為4的行(參數(shù)a歉糜,表示添加行,參數(shù)a后面指定添加的內(nèi)容)

sed -n '/love/,/unlove/p' example.file

只打印包含love字符串行到包含unlove字符串行之間的所有行(確定行的范圍就是通過逗號實現(xiàn)的)

sed -n '5,/^wang/p' example

只打印從第五行開始到第一個包含以wang開始的行之間的所有行

3)編輯 e命令

sed --expression='s/test/check/' --expression='/love/d' example.file

一個比-e更好的命令是--expression望众。它能給sed表達式賦值匪补。

sed -e '11,53d' -e 's/wang/pan/' example.file

(-e)選項允許在同一行里執(zhí)行多條命令伞辛。如例子所示,第一條命令刪除11至53行夯缺,第二條命令用pan替換wang蚤氏。命令的執(zhí)行順序?qū)Y(jié)果有影響。如果兩個命令都是替換命令踊兜,那么第一個替換命令將影響第二個替換命令的結(jié)果竿滨。(參數(shù)d,表示刪除指定的行)

4)從文件讀寫:r命令和w命令

sed '/wangpan/r file' example.file

file里的內(nèi)容被讀進來捏境,顯示在與wangpan匹配的行后面于游,如果匹配多行,則file的內(nèi)容將顯示在所有匹配行的下面垫言。參數(shù)r贰剥,表示讀出文件,后面空格緊跟文件名稱

sed -n '/test/w file' example.file

在example.file中所有包含test的行都被寫入file里筷频。參數(shù)w蚌成,表示將匹配的行寫入到指定的文件file中

5)追加和插入命令:a命令和i命令

sed '/^test/a\this is a example' example.file

'this is a example'被追加到以test開頭的行后面,sed要求命令a后面有一個反斜杠凛捏。

sed '/test/i\oh! My god!' example.file
'oh! My god!'被追加到包含test字符串行的前面笑陈,參數(shù)i表示添加指定內(nèi)容到匹配行的前面,sed要求參數(shù)i后面有一個反斜杠(也可以不加)

6)變形:y命令

sed '1,10y/abcde/ABCDE/' example.file

把1-10行內(nèi)所有abcde轉(zhuǎn)變?yōu)榇髮懣⒁夂祝齽t表達式元字符不能使用這個命令。參數(shù)y坡锡,表示把一個字符翻譯為另外的字符(但是不用于正則表達式)

7)保持和獲扰钔:h命令和G命令

sed -e '/old/h' -e '/girl-friend/G' test_sed_command.txt

首先了解參數(shù)h,拷貝匹配成功行的內(nèi)容到內(nèi)存中的緩沖區(qū)鹉勒。在了解參數(shù)G帆锋,獲得內(nèi)存緩沖區(qū)的內(nèi)容,并追加到當(dāng)前模板塊文本的后面禽额。上面命令行的含義:將包含old字符串的行的內(nèi)容保存在緩沖區(qū)中锯厢,然后將緩沖區(qū)的內(nèi)容拿出來添加到包含girl-friend字符串行的后面。隱含要求搜集到緩沖區(qū)的匹配行在需要添加行的前面

8)保持和互換:h命令和x命令

sed -e '/test/h' -e '/wangpan/x' example.file

將包含test字符串的行的內(nèi)容保存在緩沖區(qū)中脯倒,然后再將緩沖區(qū)的內(nèi)容替換包含wangpan字符串的行实辑。參數(shù)x,表示行替換操作藻丢。隱含要求搜集到緩沖區(qū)的匹配行在需要被替換行的前面

三剪撬、收集

  1. sed -e 's/123/1234/' a.txt
    將a.txt文件中所有行中的123用1234替換,每行只匹配第一次(-e表示命令以命令行的方式執(zhí)行;參數(shù)s悠反,表示執(zhí)行替換操作残黑,不改變原文件)

2.#sed -e 's/123/1234/g' a.txt
將a.txt文件中所有行中的123用1234替換,每行匹配多次(-e表示命令以命令行的方式執(zhí)行馍佑;參數(shù)s,表示執(zhí)行替換操作梨水;參數(shù)g拭荤,表示每行匹配多次,不改變原文件)

3.# sed -e '3,5 a4' a.txt
將a.txt文件中的3行到5行之間所有行的后面添加一行內(nèi)容為4的行(參數(shù)a疫诽,表示添加行舅世,參數(shù)a后面指定添加的內(nèi)容,不改變原文件)

4.# sed -e '1 s/12/45/' a.txt
把第一行的12替換成45(不改變原文件)

5.#sed -i "s/456aaa/444aaa/" grep 456aaa -lr /mnt/
在/mnt/share目錄下所有的文件及所有子目錄下的文件中找出包括aaa456的文件(不包括文件夾),將找出來的文件中的456aaa替換成444aaa(-i表示直接改變文件)

6.#sed -n 's/^test/mytest/p' example.file
(-n)選項和p標志一起使用表示只打印那些發(fā)生替換的行踊沸。也就是說歇终,如果某一行開頭的test被替換成mytest,就打印它逼龟。(^這是正則表達式中表示開頭评凝,該符號后面跟的就是開頭的字符串)(參數(shù)p表示打印行)

7.#sed 's/^wangpan/&19850715/' example.file
表示被替換換字符串被找到后,被替換的字符串通過&符號連接給出的字符串組成新字符傳替換被替換的字符串,所有以wangpan開頭的行都會被替換成它自已加19850715腺律,變成wangpan19850715

8.#sed -n 's/loveable/\1rs/p' example.file
love被標記為1奕短,所有l(wèi)oveable會被替換成lovers,而且替換的行會被打印出來匀钧。需要將這條命令分解翎碑,s/是表示替換操作,love表示選中l(wèi)ove字符串之斯,loveable/表示包含loveable的行日杈,loveable/\1表示love字符串標記為1,表示在替換過程中不變佑刷。rs/表示替換的目標字符串莉擒。這條命令的操作含義:只打印替換了的行,如果替換字符和被替換字符有部分內(nèi)容相同,則可用這種標記方法

9.#sed 's#10#100#g' example.file
不論什么字符瘫絮,緊跟著s命令的都被認為是新的分隔符涨冀,所以,“#”在這里是分隔符麦萤,代替了默認的“/”分隔符鹿鳖,但是在一個表達示中,不能把不同字符混合用作分隔符壮莹。表示把所有10替換成100翅帜。

10.#sed -n '/love/,/unlove/p' example.file
只打印包含love字符串行到包含unlove字符串行之間的所有行,如果找不到unlove,則一直到最后一行(確定行的范圍就是通過逗號實現(xiàn)的)

11.#sed -n '5,/^wang/p' example
只打印從第五行開始到第一個包含以wang開始的行之間的所有行

12.#sed '/love/,/unlove/s/$/jeffery/p' example.file
對于包含love字符串的行到包含unlove字符串之間的行垛孔,每行的末尾用字符串jeffery替換藕甩。
字符串$/表示以字符串結(jié)尾的行,$/表示每一行的結(jié)尾周荐,s/$/jeffery/表示每一行的結(jié)尾添加jeffery字符串

13.#sed -e '11,53d' -e 's/wang/pan/' example.file
(-e)選項允許在同一行里執(zhí)行多條命令狭莱。如例子所示,第一條命令刪除11至53行概作,第二條命令用pan替換wang腋妙。命令的執(zhí)行順序?qū)Y(jié)果有影響。如果兩個命令都是替換命令讯榕,那么第一個替換命令將影響第二個替換命令的結(jié)果骤素。(參數(shù)d,表示刪除指定的行)

14.# sed --expression='s/wang/pan/' --expression='/love/d' example.file
一個比-e更好的命令是--expression愚屁。它能給sed表達式賦值济竹。

15.#sed '/wangpan/r file' example.file
file里的內(nèi)容被讀進來,顯示在與wangpan匹配的行后面霎槐,如果匹配多行送浊,則file的內(nèi)容將顯示在所有匹配行的下面。參數(shù)r丘跌,表示讀出文件袭景,后面空格緊跟文件名稱

16.# sed -n '/test/w file' example.file
在example.file中所有包含test的行都被寫入file里。參數(shù)w闭树,表示將匹配的行寫入到指定的文件file中

17.sed '/test/i\oh! My god!' example.file
'oh! My god!'被追加到包含test字符串行的前面耸棒,參數(shù)i表示添加指定內(nèi)容到匹配行的前面一行,sed要求參數(shù)i后面有一個反斜杠

18.#sed '1,10y/abcde/ABCDE/' example.file
把1—10行內(nèi)所有abcde轉(zhuǎn)變?yōu)榇髮懕ㄈ瑁⒁庥胙辏齽t表達式元字符不能使用這個命令。參數(shù)y碍现,表示把一個字符翻譯為另外的字符(但是不用于正則表達式)

19.#find . -name "*.log" -exec rm -f {} ;
查找當(dāng)前目錄及子目錄里所有的文件幅疼,刪除文件名以log為后綴的文件 -exec可以對find出來的結(jié)果執(zhí)行命令, {} ;代表find出來的結(jié)果鸵赫,除了-name參數(shù)外衣屏,經(jīng)常用的還有:
1)-mtime,-ctime,atime都是指按時間查找,-mtime是文件的修改時間辩棒,-ctime是文件的創(chuàng)建時間狼忱,atime是后找開文件時間;
2)-type 指定查找的文件的類型一睁,它有d,l,b,p,f,c等文件類型,d是查找目錄钻弄,l是查找鏈接檔,b是查找塊文件者吁,p是查找管道文件窘俺,f是普通文件,c是字符設(shè)備文件复凳;
3)-perm 0700 查權(quán)限為700的文件或目錄瘤泪;
4)-size +512k 查大于512k的文件 灶泵;-size -512k 查小于512k的文件;
5)-mtime +2 兩天以前修改過的文件对途; -mtime -2 兩天內(nèi)修改過的文件赦邻;-atime -2 兩天內(nèi)訪問過的文件;-ctime -2 兩天內(nèi)創(chuàng)建的文件

  1. 合并文件里所有行到一行
    sed ':a;N;s/\r\n/ /;ta' file # 注意有些是"\r\n",有些只有"\n"实檀, 可以用文件編輯器16進制查看是哪種
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末惶洲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子膳犹,更是在濱河造成了極大的恐慌恬吕,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件须床,死亡現(xiàn)場離奇詭異铐料,居然都是意外死亡,警方通過查閱死者的電腦和手機侨颈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門余赢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人哈垢,你說我怎么就攤上這事妻柒。” “怎么了耘分?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵举塔,是天一觀的道長。 經(jīng)常有香客問我求泰,道長央渣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任渴频,我火速辦了婚禮芽丹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘卜朗。我一直安慰自己拔第,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布场钉。 她就那樣靜靜地躺著蚊俺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪逛万。 梳的紋絲不亂的頭發(fā)上泳猬,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機與錄音,去河邊找鬼得封。 笑死埋心,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的呛每。 我是一名探鬼主播踩窖,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼坡氯,長吁一口氣:“原來是場噩夢啊……” “哼晨横!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起箫柳,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤手形,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后悯恍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體库糠,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年涮毫,在試婚紗的時候發(fā)現(xiàn)自己被綠了瞬欧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡罢防,死狀恐怖艘虎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情咒吐,我是刑警寧澤野建,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站恬叹,受9級特大地震影響候生,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜绽昼,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一唯鸭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧硅确,春花似錦目溉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至大莫,卻和暖如春蛉腌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工烙丛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留舅巷,地道東北人。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓河咽,卻偏偏與公主長得像钠右,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子忘蟹,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容