文本查看及處理工具
wc
wc命令用來計算數字。利用wc指令我們可以計算文件的Byte數、字數或是列數
語法
wc(選項)(參數)
選項
-c或--bytes或——chars:只顯示Bytes數;
-l或——lines:只顯示列數;
-w或——words:只顯示字數。
參數
文件:需要統計的文件列表
實例
[root@localhost tmp]# cat test
hello world
hello world
hello everyone
[root@localhost tmp]# wc test
3 6 39 test
[root@localhost tmp]# wc -c test
39 test
[root@localhost tmp]# wc -l test
3 test
[root@localhost tmp]# wc -w test
6 test
cut
cut命令用來顯示行中的指定部分,刪除文件中指定字段
語法
cut(選項)(參數)
選項
-b:僅顯示行中指定直接范圍的內容;
-c:僅顯示行中指定范圍的字符;
-d:指定字段的分隔符,默認的字段分隔符為“TAB”;
-f:顯示指定字段的內容;
-n:與“-b”選項連用,不分割多字節字符;
--complement:補足被選擇的字節、字符或字段;
--out-delimiter=<字段分隔符>:指定輸出內容是的字段分割符;
參數
文件:指定要進行內容過濾的文件
實例
[root@localhost ~]# cat /tmp/test
No Name Mark Percent
01 tom 69 91
02 jack 71 87
03 alex 68 98
- 顯示第二列內容,第二、四列,前二列,從第二到第四列
[root@localhost ~]# cut -f 2 /tmp/test Name tom jack alex [root@localhost ~]# cut -f 2,4 /tmp/test Name Percent tom 91 jack 87 alex 98 [root@localhost ~]# cut -f -2 /tmp/test No Name 01 tom 02 jack 03 alex [root@localhost ~]# cut -f 2-4 /tmp/test Name Mark Percent tom 69 91 jack 71 87 alex 68 98
- 使用指定分隔符
[root@localhost ~]# cat /tmp/test2 No Name Mark Percent 01 tom 69 91 02 jack 71 87 03 alex 68 98 [root@localhost ~]# cut -f 2 -d " " /tmp/test2 Name tom jack alex
- 顯示指定字符,第一個字符,第二到第五個字符,第二和第五個字符
[root@localhost ~]# cut -c 1 /tmp/test2 N 0 0 0 [root@localhost ~]# cut -c 2-5 /tmp/test2 o Na 1 to 2 ja 3 al [root@localhost ~]# cut -c 2,5 /tmp/test2 oa 1o 2a 3l
sort
sort命令是在Linux里非常有用,它將文件進行排序,并將排序結果標準輸出。sort命令既可以從特定的文件,也可以從stdin中獲取輸入。
語法
sort(選項)(參數)
選項
-b:忽略每行前面開始出的空格字符;
-c:檢查文件是否已經按照順序排序;
-d:排序時,處理英文字母、數字及空格字符外,忽略其他的字符;
-f:排序時,將小寫字母視為大寫字母;
-i:排序時,除了040至176之間的ASCII字符外,忽略其他的字符;
-m:將幾個排序號的文件進行合并;
-M:將前面3個字母依照月份的縮寫進行排序;
-n:依照數值排序;
-o<輸出文件>:將排序后的結果存入制定的文件;
-r:以相反的順序來排序;
-t<分隔字符>:指定排序時所用的欄位分隔字符;
+<起始欄位>-<結束欄位>:以指定的欄位來排序,范圍由起始欄位到結束欄位的前一欄位。
-k選項的具體語法格式
k選項的語法格式,如下:
[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]
語法格式可以被其中的逗號(“,”)分為兩大部分,Start部分和End部分。
“如果不設定End部分,那么就認為End被設定為行尾”。
Start部分也由三部分組成,其中的Modifier部分就是類似n和r的選項部分。
其中Start部分的FStart和C.Start:
C.Start也是可以省略的,省略的話就表示從本域的開頭部分開始。
FStart.CStart,其中FStart就是表示使用的域,而CStart則表示在FStart域中從第幾個字符開始算“排序首字符”。
同理,在End部分中,你可以設定FEnd.CEnd,如果你省略.CEnd,則表示結尾到“域尾”,即本域的最后一個字符?;蛘?,如果你將CEnd設定為0(零),也是表示結尾到“域尾”。
參數
文件:指定待排序的文件列表。
實例
[root@localhost ~]# cat /tmp/test3
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
bbb:20:2.2
eee:50:5.5
eee:50:5.5
- 默認升序排序
[root@localhost ~]# sort /tmp/test3 aaa:10:1.1 bbb:20:2.2 ccc:30:3.3 ddd:40:4.4 eee:50:5.5 eee:50:5.5
- 忽略相同行 -u 等同于 | uniq
[root@localhost ~]# sort -u /tmp/test3 aaa:10:1.1 bbb:20:2.2 ccc:30:3.3 ddd:40:4.4 eee:50:5.5
–選項k實例
[root@localhost ~]# cat /tmp/test3
google 110 5000
baidu 100 5000
guge 50 3000
sohu 100 4500
按第一列首字母排列
[root@localhost ~]# sort -t " " -k1 /tmp/test3
baidu 100 5000
google 110 5000
guge 50 3000
sohu 100 4500
按第二列數值排序
[root@localhost ~]# sort -n -t " " -k2 /tmp/test3
guge 50 3000
baidu 100 5000
sohu 100 4500
google 110 5000
按第二列數值排序,如相同按照第三列數值排序
[root@localhost ~]# sort -n -t " " -k2 -k3 /tmp/test3
guge 50 3000
sohu 100 4500
baidu 100 5000
google 110 5000
按第三列數值排序,如相同按第二列數值排降序
[root@localhost ~]# sort -n -t " " -k3 -k2r /tmp/test3
guge 50 3000
sohu 100 4500
google 110 5000
baidu 100 5000
對每一列進行排序時,要按照數值大小進行排序
[root@localhost ~]# sort -t " " -nk3 -nk2r /tmp/test3
guge 50 3000
sohu 100 4500
google 110 5000
baidu 100 5000
從第一列第二個字符進行排序
[root@localhost ~]# sort -t " " -k 1.2 /tmp/test3
baidu 100 5000
sohu 100 4500
google 110 5000
guge 50 3000
uniq
uniq命令用于報告或忽略文件中的重復行,一般與sort命令結合使用。
語法
uniq(選項)(參數)
選項
-c或——count:在每列旁邊顯示該行重復出現的次數;
-d或--repeated:僅顯示重復出現的行列;
-f<欄位>或--skip-fields=<欄位>:忽略比較指定的欄位;
-s<字符位置>或--skip-chars=<字符位置>:忽略比較指定的字符;
-u或——unique:僅顯示出一次的行列;
-w<字符位置>或--check-chars=<字符位置>:指定要比較的字符。
參數
- 輸入文件:指定要去除的重復行文件。如果不指定此項,則從標準讀取數據;
- 輸出文件:指定要去除重復行后的內容要寫入的輸出文件。如果不指定此選項,則將內容顯示到標準輸出設備(顯示終端)。
實例
[root@localhost ~]# cat /tmp/test3
google 110 5000
baidu 100 5000
guge 50 3000
sohu 100 4500
baidu 100 6000
google 110 5000
- 統計重復的次數
[root@localhost ~]# sort /tmp/test3 | uniq -c 1 baidu 100 5000 1 baidu 100 6000 2 google 110 5000 1 guge 50 3000 1 sohu 100 4500
- 只顯示重復的行
[root@localhost ~]# sort /tmp/test3 | uniq -d google 110 5000
- 顯示不重復的行
[root@localhost ~]# sort /tmp/test3 | uniq -u baidu 100 5000 baidu 100 6000 guge 50 3000 sohu 100 4500
diff
diff命令在最簡單的情況下,比較給定的兩個文件的不同。diff命令是以逐行的方式,比較文本文件的異同處。
語法
diff(選項)(參數)
選項
-<行數>:指定要顯示多少行的文本。此參數必須與-c或-u參數一并使用;
-a或——text:diff預設只會逐行比較文本文件;
-b或--ignore-space-change:不檢查空格字符的不同;
-B或--ignore-blank-lines:不檢查空白行;
-c:顯示全部內容,并標出不同之處;
-C<行數>或--context<行數>:與執行“-c-<行數>”指令相同;
-d或——minimal:使用不同的演算法,以小的單位來做比較;
-D<巨集名稱>或ifdef<巨集名稱>:此參數的輸出格式可用于前置處理器巨集;
-e或——ed:此參數的輸出格式可用于ed的script文件;
-f或-forward-ed:輸出的格式類似ed的script文件,但按照原來文件的順序來顯示不同處;
-H或--speed-large-files:比較大文件時,可加快速度;
-l<字符或字符串>或--ignore-matching-lines<字符或字符串>:若兩個文件在某幾行有所不同,而之際航同時都包含了選項中指定的字符或字符串,則不顯示這兩個文件的差異;
-i或--ignore-case:不檢查大小寫的不同;
-l或——paginate:將結果交由pr程序來分頁;
-n或——rcs:將比較結果以RCS的格式來顯示;
-N或--new-file:在比較目錄時,若文件A僅出現在某個目錄中,預設會顯示:Only in目錄,文件A 若使用-N參數,則diff會將文件A 與一個空白的文件比較;
-p:若比較的文件為C語言的程序碼文件時,顯示差異所在的函數名稱;
-P或--unidirectional-new-file:與-N類似,但只有當第二個目錄包含了第一個目錄所沒有的文件時,才會將這個文件與空白的文件做比較;
-q或--brief:僅顯示有無差異,不顯示詳細的信息;
-r或——recursive:比較子目錄中的文件;
-s或--report-identical-files:若沒有發現任何差異,仍然顯示信息;
-S<文件>或--starting-file<文件>:在比較目錄時,從指定的文件開始比較;
-t或--expand-tabs:在輸出時,將tab字符展開;
-T或--initial-tab:在每行前面加上tab字符以便對齊;
-u,-U<列數>或--unified=<列數>:以合并的方式來顯示文件內容的不同;
-v或——version:顯示版本信息;
-w或--ignore-all-space:忽略全部的空格字符;
-W<寬度>或--width<寬度>:在使用-y參數時,指定欄寬;
-x<文件名或目錄>或--exclude<文件名或目錄>:不比較選項中所指定的文件或目錄;
-X<文件>或--exclude-from<文件>;您可以將文件或目錄類型存成文本文件,然后在=<文件>中指定此文本文件;
-y或--side-by-side:以并列的方式顯示文件的異同之處;
--help:顯示幫助;
--left-column:在使用-y參數時,若兩個文件某一行內容相同,則僅在左側的欄位顯示該行內容;
--suppress-common-lines:在使用-y參數時,僅顯示不同之處。
參數
- 文件1:指定要比較的第一個文件;
- 文件2:指定要比較的第二個文件。
實例
[root@localhost ~]# cat /tmp/test3
google 110 5000
baidu 100 5000
guge 50 3000
sohu 100 4500
baidu 100 6000
google 110 5000
[root@localhost ~]# cat /tmp/test4
google 200 5000
baidu 100 5000
guge 50 3000
sohu 300 4500
baidu 100 6000
- 比較2個文件不同,normal模式
[root@localhost ~]# diff /tmp/test3 /tmp/test4 1c1 < google 110 5000 --- > google 200 5000 4c4 < sohu 100 4500 --- > sohu 300 4500 6d5 < google 110 5000
diff描述兩個文件不同的方式是告訴我們怎么樣改變第一個文件之后與第二個文件匹配
1c1:前面的數字表示第一個文件的第一行,后面的數字表示第二個文件的第一行
操作: a=add c=change d=delete
- 比較2個文件不同,context模式
[root@localhost ~]# diff -c /tmp/test3 /tmp/test4*** /tmp/test3 2018-03-16 11:07:47.034584349 +0800 //***代表test3--- /tmp/test4 2018-03-16 11:36:01.154251821 +0800 //---代表test4*************** //分隔符*** 1,6 **** //test3文件的1-6行! google 110 5000 baidu 100 5000 guge 50 3000! sohu 100 4500 baidu 100 6000- google 110 5000--- 1,5 ---- //! google 200 5000 baidu 100 5000 guge 50 3000! sohu 300 4500 baidu 100 6000操作 !表示修改,-表示刪除,+表示增加無論這些符號出現在哪個區域,都表示第一個文件需要做出一些操作才能與第二個文件想匹配。
- 比較2個文件不同,Unified模式
[root@localhost ~]# diff -u /tmp/test3 /tmp/test4--- /tmp/test3 2018-03-16 11:07:47.034584349 +0800+++ /tmp/test4 2018-03-16 11:36:01.154251821 +0800@@ -1,6 +1,5 @@-google 110 5000+google 200 5000 baidu 100 5000 guge 50 3000-sohu 100 4500+sohu 300 4500 baidu 100 6000-google 110 5000
- 目錄比較
[root@localhost tmp]# ll test1總用量 8-r--r--r--. 1 root root 33 1月 30 17:28 machine-id-r--r--r--. 1 root root 2207 1月 30 17:28 mtab[root@localhost tmp]# ll testtest總用量 4-r--r--r--. 1 root root 33 1月 30 17:24 machine-id[root@localhost tmp]# diff -r -q test1 testtest只在 test1 存在:mtab
patch
patch 打補丁。通過diff工具生成補丁,patch工具打上補丁。
語法
path(選項)(參數)
選項
-b或--backup 備份每一個原始文件。
-B<備份字首字符串>或--prefix=<備份字首字符串> 設置文件備份時,附加在文件名稱前面的字首字符串,該字符串可以是路徑名稱。
-c或--context 把修補數據解譯成關聯性的差異。
-d<工作目錄>或--directory=<工作目錄> 設置工作目錄。
-D<標示符號>或--ifdef=<標示符號> 用指定的符號把改變的地方標示出來。
-e或--ed 把修補數據解譯成ed指令可用的敘述文件。
-E或--remove-empty-files 若修補過后輸出的文件其內容是一片空白,則移除該文件。
-f或--force 此參數的效果和指定"-t"參數類似,但會假設修補數據的版本為新 版本。
-F<監別列數>或--fuzz<監別列數> 設置監別列數的最大值。
-g<控制數值>或--get=<控制數值> 設置以RSC或SCCS控制修補作業。
-i<修補文件>或--input=<修補文件> 讀取指定的修補問家你。
-l或--ignore-whitespace 忽略修補數據與輸入數據的跳格,空格字符。
-n或--normal 把修補數據解譯成一般性的差異。
-N或--forward 忽略修補的數據較原始文件的版本更舊,或該版本的修補數據已使 用過。
-o<輸出文件>或--output=<輸出文件> 設置輸出文件的名稱,修補過的文件會以該名稱存放。
-p<剝離層級>或--strip=<剝離層級> 設置欲剝離幾層路徑名稱。
-f<拒絕文件>或--reject-file=<拒絕文件> 設置保存拒絕修補相關信息的文件名稱,預設的文件名稱為.rej。
-R或--reverse 假設修補數據是由新舊文件交換位置而產生。
-s或--quiet或--silent 不顯示指令執行過程,除非發生錯誤。
-t或--batch 自動略過錯誤,不詢問任何問題。
-T或--set-time 此參數的效果和指定"-Z"參數類似,但以本地時間為主。
-u或--unified 把修補數據解譯成一致化的差異。
-v或--version 顯示版本信息。
-V<備份方式>或--version-control=<備份方式> 用"-b"參數備份目標文件后,備份文件的字尾會被加上一個備份字符串,這個字符串不僅可用"-z"參數變更,當使用"-V"參數指定不同備份方式時,也會產生不同字尾的備份字符串。
-Y<備份字首字符串>或--basename-prefix=--<備份字首字符串> 設置文件備份時,附加在文件基本名稱開頭的字首字符串。
-z<備份字尾字符串>或--suffix=<備份字尾字符串> 此參數的效果和指定"-B"參數類似,差別在于修補作業使用的路徑與文件名若為src/linux/fs/super.c,加上"backup/"字符串后,文件super.c會備份于/src/linux/fs/backup目錄里。
-Z或--set-utc 把修補過的文件更改,存取時間設為UTC。
--backup-if-mismatch 在修補數據不完全吻合,且沒有刻意指定要備份文件時,才備份文件。
--binary 以二進制模式讀寫數據,而不通過標準輸出設備。
--help 在線幫助。
--nobackup-if-mismatch 在修補數據不完全吻合,且沒有刻意指定要備份文件時,不要備份文件。
--verbose 詳細顯示指令的執行過程。
參數
- 文件1:需打補丁的文件;
- 文件2:補丁文件。
實例
[root@localhost tmp]# cat /tmp/test2
aaa:10:1.1
ccc:30:3.3
ddd:40:4.4
bbb:20:2.2
eee:50:5.5
eee:50:5.5
[root@localhost tmp]# cat /tmp/test3
google 110 5000
baidu 100 5000
guge 50 3000
sohu 100 4500
baidu 100 6000
google 110 5000
[root@localhost tmp]# diff /tmp/test2 /tmp/test3 > /tmp/test.patch
[root@localhost tmp]# cat test.patch
1,6c1,6
< aaa:10:1.1
< ccc:30:3.3
< ddd:40:4.4
< bbb:20:2.2
< eee:50:5.5
< eee:50:5.5
---
> google 110 5000
> baidu 100 5000
> guge 50 3000
> sohu 100 4500
> baidu 100 6000
> google 110 5000
[root@localhost tmp]# patch -p0 /tmp/test2 /tmp/test.patch
patching file /tmp/test2
[root@localhost tmp]# cat /tmp/test2
google 110 5000
baidu 100 5000
guge 50 3000
sohu 100 4500
baidu 100 6000
google 110 5000
綜合實例
- 列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。
[root@localhost ~]# who root pts/0 2018-03-16 10:51 (10.88.201.253) centos pts/1 2018-03-16 17:16 (10.88.201.53) root pts/2 2018-03-16 17:16 (10.88.201.253) [root@localhost ~]# who | cut -d " " -f 1 | sort -u centos root
- 取出最后登錄到當前系統的用戶的相關信息。
[root@localhost ~]# last | head -1 | cut -d " " -f 1 | id uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
- 取出當前系統上被用戶當作其默認shell的最多的那個shell。
[root@localhost ~]# cat /etc/passwd | cut -d ":" -f7 | uniq -c | sort -nr | head -1 12 /sbin/nologin
- 將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxusers.txt文件中。
[root@localhost ~]# cat /etc/passwd | sort -t: -nk3 | tail -10 | tr "a-z" "A-Z" > /tmp/maxuser.txt [root@localhost ~]# cat /tmp/maxuser.txt NOBODY:X:99:99:NOBODY:/:/SBIN/NOLOGIN SYSTEMD-NETWORK:X:192:192:SYSTEMD NETWORK MANAGEMENT:/:/SBIN/NOLOGIN TEST2:X:567:1004::/HOME/TEST2:/BIN/BASH POLKITD:X:998:996:USER FOR POLKITD:/:/SBIN/NOLOGIN SYSTEMD-BUS-PROXY:X:999:997:SYSTEMD BUS PROXY:/:/SBIN/NOLOGIN CENTOS:X:1000:1000::/HOME/CENTOS:/BIN/BASH TEST:X:1001:1001::/HOME/TEST:/BIN/BASH LINUX:X:1002:1003::/HOME/LINUX:/BIN/BASH TESTUSER:X:1003:1002::/HOME/TESTUSER:/BIN/BASH TESTUSERS:X:1004:1001::/HOME/TEST1:/BIN/BASH
- 取出當前主機的IP地址,提示:對ifconfig命令的結果進行切分。
[root@localhost ~]# ifconfig ens33 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.27 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::954a:d872:f506:678b prefixlen 64 scopeid 0x20<link> ether 00:0c:29:52:81:1a txqueuelen 1000 (Ethernet) RX packets 76310 bytes 7928110 (7.5 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 3877 bytes 668914 (653.2 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@localhost ~]# ifconfig ens33 | grep "\<inet\>" | cut -d " " -f10 192.168.1.27
- 列出/etc目錄下所有以.conf結尾的文件的文件名,并將其名字轉換為大寫后保存至/tmp/etc.conf文件中。
[root@localhost ~]# ls /etc/*.conf | tr "a-z" "A-Z" >/tmp/etc.conf [root@localhost ~]# cat /tmp/etc.conf /ETC/ASOUND.CONF /ETC/DNSMASQ.CONF /ETC/DRACUT.CONF /ETC/E2FSCK.CONF /ETC/FUSE.CONF /ETC/GEOIP.CONF /ETC/HOST.CONF /ETC/KDUMP.CONF /ETC/KRB5.CONF /ETC/LD.SO.CONF /ETC/LIBAUDIT.CONF /ETC/LIBUSER.CONF /ETC/LOCALE.CONF /ETC/LOGROTATE.CONF /ETC/MAN_DB.CONF /ETC/MKE2FS.CONF /ETC/NSSWITCH.CONF /ETC/RESOLV.CONF /ETC/RSYSLOG.CONF /ETC/SESTATUS.CONF /ETC/SUDO.CONF /ETC/SUDO-LDAP.CONF /ETC/SYSCTL.CONF /ETC/TCSD.CONF /ETC/VCONSOLE.CONF /ETC/YUM.CONF
- 顯示/var目錄下一級子目錄或文件的總個數
[root@localhost ~]# ll /var total 8 drwxr-xr-x. 2 root root 6 Nov 5 2016 adm drwxr-xr-x. 6 root root 62 Dec 23 22:04 cache drwxr-xr-x. 2 root root 6 Nov 7 2016 crash drwxr-xr-x. 3 root root 34 Dec 23 22:04 db drwxr-xr-x. 3 root root 18 Dec 23 22:04 empty drwxr-xr-x. 2 root root 6 Nov 5 2016 games drwxr-xr-x. 2 root root 6 Nov 5 2016 gopher drwxr-xr-x. 3 root root 18 Dec 23 22:03 kerberos -rw-r--r--. 1 root root 0 Mar 12 15:22 la5bc drwxr-xr-x. 2 root root 19 Mar 12 15:29 la6bc drwxr-xr-x. 24 root root 4096 Mar 12 14:24 lib drwxr-xr-x. 2 root root 6 Nov 5 2016 local lrwxrwxrwx. 1 root root 11 Dec 23 22:03 lock -> ../run/lock drwxr-xr-x. 7 root root 4096 Mar 12 14:24 log lrwxrwxrwx. 1 root root 10 Dec 23 22:03 mail -> spool/mail drwxr-xr-x. 2 root root 6 Nov 5 2016 nis drwxr-xr-x. 2 root root 6 Nov 5 2016 opt drwxr-xr-x. 2 root root 6 Nov 5 2016 preserve lrwxrwxrwx. 1 root root 6 Dec 23 22:03 run -> ../run drwxr-xr-x. 8 root root 87 Dec 23 22:04 spool drwxrwxrwt. 4 root root 166 Mar 12 14:25 tmp drwxr-xr-x. 2 root root 6 Nov 5 2016 yp [root@localhost ~]# ll /var | grep '[-d]' | wc -l 22
- 取出/etc/group文件中第三個字段數值最小的10個組的名字
[root@localhost ~]# cat /etc/group | sort -t: -nk3 | head -10 | cut -d":" -f 1 root bin daemon sys adm tty disk lp mem kmem
- 將/etc/fstab和/etc/issue文件的內容合并為同一個內容后保存至/tmp/etc.test文件中
[root@localhost ~]# cat /etc/fstab /etc/issue > /tmp/etc.test [root@localhost ~]# cat /tmp/etc.test # # /etc/fstab # Created by anaconda on Sat Dec 23 22:03:02 2017 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/cl-root / xfs defaults 0 0 UUID=738ad172-a69c-4c16-a207-0bed0add31b5 /boot xfs defaults 0 0 /dev/mapper/cl-swap swap swap defaults 0 0 \S Kernel \r on an \m
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/92649