導航:首頁 > 程序命令 > exp命令詳解

exp命令詳解

發布時間:2024-12-04 11:49:29

linux文本匹配命令grep與fgrep使用全解

Linux中grep與fgrep命令的使用,兩個命令的使用都與文本的搜索與匹配相關,是Linux入門學習中的基礎知識,接下來是我為大家收集的Linux文本匹配命令grep與fgrep使用全解,希望能幫到大家。
Linux文本匹配命令grep與fgrep使用全解
grep

grep (global search regular expression(RE) and print out the line,全面搜索正則表達式並把行列印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行列印出來。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的擴展,支持更多的re元字元, fgrep就是fixed grep或fast grep,它們把所有的字母都看作單詞,也就是說,正則表達式中的元字元表示回其自身的字面意義,不再特殊。Linux使用GNU版本的grep。它功能更強,可以通過-G、-E、-F命令行選項來使用egrep和fgrep的功能。

grep的工作方式是這樣的,它在一個或多個文件中搜索字元串模板。如果模板包括空格,則必須被引用,模板後的所有字元串被看作文件名。搜索的結果被送到屏幕,不影響原文件內容。

grep可用於shell腳本,因為grep通過返回一個狀態值來說明搜索的狀態,如果模板搜索成功,則返回0,如果搜索不成功,則返回1,如果搜索的文件不存在,則返回2。我們利用這些返回值就可進行一些自動化的文本處理工作。

grep --help

匹配模式選擇:

-E, --extended-regexp 擴展正則表達式egrep

-F, --fixed-strings 一個換行符分隔的字元串的集合fgrep

-G, --basic-regexp 基本正則

-P, --perl-regexp 調用的perl正則

-e, --regexp=PATTERN 後面根正則模式,默認無

-f, --file=FILE 從文件中獲得匹配模式

-i, --ignore-case 不區分大小寫

-w, --word-regexp 匹配整個單詞

-x, --line-regexp 匹配整行

-z, --null-data 一個 0 位元組的數據行,但不是空行

雜項:

-s, --no-messages 不顯示錯誤信息

-v, --invert-match 顯示不匹配的行

-V, --version 顯示版本號

--help 顯示幫助信息

--mmap use memory-mapped input if possible

輸入控制:

-m, --max-count=NUM 匹配的最大數

-b, --byte-offset 列印匹配行前面列印該行所在的塊號碼。

-n, --line-number 顯示的加上匹配所在的行號

--line-buffered 刷新輸出每一行

-H, --with-filename 當搜索多個文件時,顯示匹配文件名前綴

-h, --no-filename 當搜索多個文件時,不顯示匹配文件名前綴

--label=LABEL print LABEL as filename for standard input

-o, --only-matching 只顯示一行中匹配PATTERN 的部分

-q, --quiet, --silent 不顯示任何東西

--binary-files=TYPE 假定二進制文件的TYPE 類型;

TYPE 可以是`binary', `text', 或`without-match'

-a, --text 匹配二進制的東西

-I 不匹配二進制的東西

-d, --directories=ACTION 目錄操作,讀取,遞歸,跳過

-D, --devices=ACTION 設置對設備,FIFO,管道的操作,讀取,跳過

-R, -r, --recursive 遞歸調用

--include=PATTERN 只查找匹配FILE_PATTERN 的文件

--exclude=PATTERN 跳過匹配FILE_PATTERN 的文件和目錄

--exclude-from=FILE 跳過所有除FILE 以外的文件

-L, --files-without-match 匹配多個文件時,顯示不匹配的文件名

-l, --files-with-matches 匹配多個文件時,顯示匹配的文件名

-c, --count 顯示匹配了多少次

-Z, --null 在FILE 文件最後列印空字元

文件控制:

-B, --before-context=NUM 列印匹配本身以及前面的幾個行由NUM控制

-A, --after-context=NUM 列印匹配本身以及隨後的幾個行由NUM控制

-C, --context=NUM 列印匹配本身以及隨後,前面的幾個行由NUM控制

-NUM 根-C的用法一樣的

--color[=WHEN],

--colour[=WHEN] 使用標志高亮匹配字串;

-U, --binary 使用標志高亮匹配字串;

-u, --unix-byte-offsets 當CR 字元不存在,報告位元組偏移(MSDOS 模式)

例:

測試文件

復制代碼

代碼如下:

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/bin/false,aaa,bbbb,cccc,aaaaaa

DADddd:x:2:2:daemon:/sbin:/bin/false

mail:x:8:12:mail:/var/spool/mail:/bin/false

ftp:x:14:11:ftp:/home/ftp:/bin/false

&nobody:$:99:99:nobody:/:/bin/false

zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

http:x:33:33::/srv/http:/bin/false

dbus:x:81:81:System message bus:/:/bin/false

hal:x:82:82:HAL daemon:/:/bin/false

mysql:x:89:89::/var/lib/mysql:/bin/false

aaa:x:1001:1001::/home/aaa:/bin/bash

ba:x:1002:1002::/home/zhangy:/bin/bash

test:x:1003:1003::/home/test:/bin/bash

@zhangying:*:1004:1004::/home/test:/bin/bash

policykit:x:102:1005:Po

a,匹配含有root的行

復制代碼

代碼如下:

[root@krlcgcms01 test]# grep root test

root:x:0:0:root:/root:/bin/bash

b,匹配以root開頭或者以zhang開頭的行,注意反斜杠

復制代碼

代碼如下:

[root@krlcgcms01 test]# cat test |grep '^\(root\|zhang\)'

root:x:0:0:root:/root:/bin/bash

zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

c,匹配以root開頭或者以zhang開頭的行,注意反斜杠,根上面一個例子一樣,-e默認是省去的

[root@krlcgcms01 test]# cat test |grep -e '^\(root\|zhang\)'

root:x:0:0:root:/root:/bin/bash

zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

d,匹配以zhang開頭,只含有字母

復制代碼

代碼如下:

[root@krlcgcms01 test]# echo 'zhangying' |grep '^zhang[a-z]*$'

zhangying

e,匹配以bin開頭的行,用的egrep,在這里可以換成-F,-G

復制代碼

代碼如下:

[root@krlcgcms01 test]# cat test |grep -E '^bin'

bin:x:1:1:bin:/bin:/bin/false,aaa,bbbb,cccc,aaaaaa

f,在匹配的行前面加上該行在文件中,或者輸出中所在的行號

復制代碼

代碼如下:

[root@krlcgcms01 test]# cat test|grep -n zhangy

7:zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

13:ba:x:1002:1002::/home/zhangy:/bin/bash

15:@zhangying:*:1004:1004::/home/test:/bin/bash

g,不匹配以bin開頭的行,並顯示行號

復制代碼

代碼如下:

[root@krlcgcms01 test]# cat test|grep -nv '^bin'

root:x:0:0:root:/root:/bin/bash

DADddd:x:2:2:daemon:/sbin:/bin/false

mail:x:8:12:mail:/var/spool/mail:/bin/false

ftp:x:14:11:ftp:/home/ftp:/bin/false

&nobody:$:99:99:nobody:/:/bin/false

zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

http:x:33:33::/srv/http:/bin/false

dbus:x:81:81:System message bus:/:/bin/false

hal:x:82:82:HAL daemon:/:/bin/false

mysql:x:89:89::/var/lib/mysql:/bin/false

aaa:x:1001:1001::/home/aaa:/bin/bash

ba:x:1002:1002::/home/zhangy:/bin/bash

test:x:1003:1003::/home/test:/bin/bash

@zhangying:*:1004:1004::/home/test:/bin/bash

policykit:x:102:1005:Po

h,顯示匹配的個數,不顯示內容

復制代碼

代碼如下:

[root@krlcgcms01 test]# cat test|grep -c zhang

3

i,匹配system,沒有加-i沒有匹配到東西。

復制代碼

代碼如下:

[root@krlcgcms01 test]# grep system test

[root@krlcgcms01 test]# grep -ni system test

9:dbus:x:81:81:System message bus:/:/bin/false

j,匹配zhan沒有匹配到東西,匹配zhangy能匹配到,因為在test文件中,有zhangy這個單詞

復制代碼

代碼如下:

[root@krlcgcms01 test]# cat test|grep -w zhan

[root@krlcgcms01 test]# cat test|grep -w zhangy

zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

ba:x:1002:1002::/home/zhangy:/bin/bash

k,在這里-x後面東西,和輸出中的整行相同時,才會輸出

[root@krlcgcms01 test]# echo "aaaaaa" |grep -x aaa

[root@krlcgcms01 test]# echo "aaaa" |grep -x aaaa

aaaa

l,最多隻匹配一次,如果把-m 1去掉的話,會有三個

復制代碼

代碼如下:

[root@krlcgcms01 test]# cat test |grep -m 1 zhang

zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

m,匹配行的前面顯示塊號,這個塊號是干什麼的,不知道,有誰知道可否告訴我一下

復制代碼

代碼如下:

[apacheuser@krlcgcms01 test]$ cat test |grep -b zha

241:zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

480:ba:x:1002:1002::/home/zhangy:/bin/bash

558:@zhangying:*:1004:1004::/home/test:/bin/bash

n,多文件匹配時,在匹配的行前面加上文件名

復制代碼

代碼如下:

[apacheuser@krlcgcms01 test]$ grep -H 'root' test test2 testbak

test:root:x:0:0:root:/root:/bin/bash

test2:root

testbak:root:x:0:0:root:/root:/bin/bash

o,多文件匹配時,在匹配的行前面不加上文件名

復制代碼

代碼如下:

[apacheuser@krlcgcms01 test]$ grep -h 'root' test test2 testbak

root:x:0:0:root:/root:/bin/bash

root

root:x:0:0:root:/root:/bin/bash

p,多文件匹配時,顯示匹配文件的文件名

復制代碼

代碼如下:

[apacheuser@krlcgcms01 test]$ grep -l 'root' test test2 testbak DAta

test

test2

testbak

q,沒有-o時,有一行匹配,這一行裡面有3個root,加上-o後,這個3個root就出來了

復制代碼

代碼如下:

[apacheuser@krlcgcms01 test]$ grep 'root' test

root:x:0:0:root:/root:/bin/bash

[apacheuser@krlcgcms01 test]$ grep -o 'root' test

root

root

root

r,遞歸顯示匹配的內容,在test目錄下面建個mytest目錄, test目錄下面的test文件到mytest下面,能看到上面的結果

復制代碼

代碼如下:

[root@krlcgcms01 test]# grep test -R /tmp/test/mytest

/tmp/test/mytest/test:test:x:1003:1003::/home/test:/bin/bash

/tmp/test/mytest/test:@zhangying:*:1004:1004::/home/test:/bin/bash

s,顯示匹配root後面的3行

復制代碼

代碼如下:

[root@krlcgcms01 test]# cat test |grep -A 3 root

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/bin/false,aaa,bbbb,cccc,aaaaaa

daemon:x:2:2:daemon:/sbin:/bin/false

mail:x:8:12:mail:/var/spool/mail:/bin/false

fgrep

用法: fgrep [選項]... PATTERN [FILE]...

在每個 FILE 或是標准輸入中查找 PATTERN。

PATTERN 是一組由斷行符分隔的定長字元串。

例如: fgrep -i 'hello world' menu.h main.c

正則表達式選擇與解釋:

-e, --regexp=PATTERN 用 PATTERN 來進行匹配操作

-f, --file=FILE 從 FILE 中取得 PATTERN

-i, --ignore-case 忽略大小寫

-w, --word-regexp 強制 PATTERN 僅完全匹配字詞

-x, --line-regexp 強制 PATTERN 僅完全匹配一行

-z, --null-data 一個 0 位元組的數據行,但不是空行

雜項:

-s, --no-messages 不顯示錯誤信息

-v, --invert-match 選中不匹配的行

-V, --version 顯示版本信息並退出

--help 顯示此幫助並退出

--mmap 忽略向後兼容性

Output control:

-m, --max-count=NUM 匹配的最大數

-b, --byte-offset 列印匹配行前面列印該行所在的塊號碼

-n, --line-number 顯示的加上匹配所在的行號

--line-buffered 刷新輸出每一行

-H, --with-filename 當搜索多個文件時,顯示匹配文件名前綴

-h, --no-filename 當搜索多個文件時,不顯示匹配文件名前綴

--label=LABEL use LABEL as the standard input file name prefix

-o, --only-matching 只顯示一行中匹配PATTERN 的部分

-q, --quiet, --silent 不顯示所有輸出

--binary-files=TYPE 假定二進制文件的TYPE 類型;

TYPE 可以是`binary', `text', 或`without-match'

-a, --text 等同於 --binary-files=text

-I 等同於 --binary-files=without-match

-d, --directories=ACTION 操作目錄的方式;

ACTION 可以是`read', `recurse',或`skip'

-D, --devices=ACTION 操作設備、先入先出隊列、套接字的方式;

ACTION 可以是`read'或`skip'

-R, -r, --recursive 等同於 --directories=recurse

--include=FILE_PATTERN 只查找匹配FILE_PATTERN 的文件

--exclude=FILE_PATTERN 跳過匹配FILE_PATTERN 的文件和目錄

--exclude-from=FILE 跳過所有除FILE 以外的文件

--exclude-dir=PATTERN 跳過所有匹配PATTERN 的目錄。

-L, --files-without-match 只列印不匹配FILEs 的文件名

-l, --files-with-matches 只列印匹配FILES 的文件名

-c, --count 只列印每個FILE 中的匹配行數目

-T, --initial-tab 行首tabs 分隔(如有必要)

-Z, --null 在FILE 文件最後列印空字元

文件控制:

-B, --before-context=NUM 列印以文本起始的NUM 行

-A, --after-context=NUM 列印以文本結尾的NUM 行

-C, --context=NUM 列印輸出文本NUM 行

-NUM 等同於 --context=NUM

--color[=WHEN],

--colour[=WHEN] 使用標志高亮匹配字串;

WHEN 可以是`always', `never'或`auto'

-U, --binary 不要清除行尾的CR 字元(MSDOS 模式)

-u, --unix-byte-offsets 當CR 字元不存在,報告位元組偏移(MSDOS 模式)

‘fgrep’已不再使用了;請用 ‘grep -F’代替。

不帶 FILE 參數,或是 FILE 為 -,將讀取標准輸入。如果少於兩個 FILE 參數

就要默認使用 -h 參數。如果選中任意一行,那退出狀態為 0,否則為 1;

如果有錯誤產生,且未指定 -q 參數,那退出狀態為 2。

例:

復制代碼

代碼如下:

[root@linux test]# cat abc.sh |fgrep a #匹配含有a的

看了“Linux文本匹配命令grep與fgrep使用全解”還想看:

1. linux grep命令詳解

2. 全面解析Linux的grep命令中正則表達式的用法

3. Linux下如何使用grep命令搜索多個單詞

4. 開發人員常用什麼linux命令

㈡ linux.pl文件linux.pl

plsql中什麼是exp?

exp本來就是dos或Linux命令行下的命令rpl/sql命令窗口實際上是相當於調用oracle的sqlplus的命令,其中沒有exp的

LINUX下Oracle數據導入導出的方法詳解?

在「運行」里打開cmd

2

輸入命令:sqlplussystem/123456@orcl

其中system是登錄資料庫的用戶名

123456是用戶名的密碼

orcl是資料庫實例名稱

3

如果提示命令無效,那就是你沒有配置好oracle的環境變數(想當年我也被這個問題困擾著),配置oracle環境變數的方法如下:

1、右擊「我的電腦」->選擇「屬性」->選擇「高級」->單擊「環境變數」2、選擇「path」這一行,單擊「編輯」,在「path」的變數值文本框的最後面先加入一個分號「:」,然後再分號後面加入sqlplus文件的目錄路徑,如「c:programfilesoracleproct10.2.0db_1bin」,然後點擊「確定」按鈕。3、如果在「系統變數」列表框下面的「變數」列中找不到「oracle_home」和「oracle_sid」這兩個變數,則需要下面操作,否則無需一下操作。4、在「系統變數」中點擊「新建」按鈕,在「變數名」中輸入「oracle_home」,變數值中輸入oracle的安裝目錄路徑,如「c:programfilesoracleproct10.2.0db_1」,然後點擊「確定」按鈕。5、在「系統變數」中點擊「新建」按鈕,在「變數名」中輸入「oracle_sid」,變數值中輸入資料庫的實例名,然後點擊「確定」按鈕。

oracle_home:oracle資料庫軟體的安裝目錄oracle_sid:oracle資料庫的實例名oracle資料庫實例名:用於和操作系統進行聯系的標識,即資料庫和操作系統之間的交換是通過資料庫實例名來體現的。

end

第二步,expdp備份命令

1

創建oracle的備份目錄:

sql>createdirectorydpdata1as'd:tempdmp'

這僅僅是在oracle里設定的目錄,並沒有真正創建

2

可以通過這句命令查看到這個目錄

sql>select*fromdba_directories;

3

賦於要導出數據表的所屬用戶許可權

sql>grantread,writeondirectorydpdata1tosshe;

4

好了,到了關鍵一步,之前走了不少彎路,但其它是小問題,在網上零零碎碎查了很多資料,終於找到原因。

首先,要切換回命令窗口,不要再在sql>下運行,然後輸入命令:

expdpsystem/123456@orcldirectory=dpdata1mpfile=sshe.dmplogfile=sshe.logschemas=sshe

5

上面報了一個錯ora-39002:操作無效

原因是d:tempdmp這個目錄不存在,別以為createdirectory之後就會自動生成文件夾,也別以為執行expdp後會自動生成文件夾,要自己手動新建這個目錄文件夾的。新建文件夾後再試一下,果然成功了!恭喜你,已成功備份!

6

如果你要問,導出來的dmp文件怎樣還原回去。好吧,做人做到底,為了省去你再找方法的麻煩,這里我也做一個演示(一般備份的數據是等到資料庫有問題時才用的上)。

首先,再一次登錄資料庫sqlplussystem/123456@orcl

然後,刪除目標資料庫用戶dropusersshecascade;

7

現在來再一次創建用戶,可以用命令創建,也可以在plsql里創建,這里在plsql創建。

用system登錄資料庫,然後右鍵users--新建

然後填寫你的賬號名稱,必須和備份時的用戶一致,並賦於相應的許可權

最後點擊應用,完成用戶創建。

8

返回dos命令窗口,不再是sql>

輸入導入命令:impdpsystem/123456@orcldirectory=dpdata1mpfile=sshe.dmplogfile=sshe.logschemas=sshe

導入成功!

end

步驟3定時執行備份任務

做一個按年月日命名的批處理。在d:temp目錄下新建一個文件,隨便命名為.bat,我的命名為sshe.bat,編輯為如下代碼

-------------------------------------------------------------------------

@echooffremsetbackupfile=f_database_%date:~0,4%-%date:~5,2%-%date:~8,2%.dmpremsetlogfile=f_database_%date:~0,4%-%date:~5,2%-%date:~8,2%./p"d:tempdmp"/d-30/c"cmd/[email protected]/f@path"cdd:tempdmp

rembackupschemassetbackupfile=sshe_%date:~0,4%-%date:~5,2%-%date:~8,2%.dmpsetlogfile=sshe_%date:~0,4%-%date:~5,2%-%date:~8,2%.logexpdpsshe/sshedirectory=dir_dpmpfile=%backupfile%logfile=%logfile%schemas=ssheparallel=4

-------------------------------------------------------------------------------

可以試執行一下,會自動生成一個以年月日命名的備份文件

forfiles/p"d:tempdmp"/d-30/c"cmd/[email protected]/f@path"的作用是:刪除本目錄下30天以後的備份文件,這個挺有用的。

做一個windows每晚自動運行資料庫備份的bat,我的命名為auto.bat編輯如下內容

------------------------------------------------------------------------------

@echooffschtasks/create/tnsshe資料庫定時備份/tr"d:tempsshe_bak.bat"/scdaily/st00:00:00/ru"system"pauseexit

------------------------------------------------------------------------------

雙擊auto.bat,就會在windows添加一個定時任務,每晚0點0分就會自動執行一次sshe.bat,從而完成自動備份的目的。

右鍵我的電腦:管理——任務計劃程序——任務計劃程序庫,可以看到剛才添加進去的定時任務

5

可以將電腦的時鍾設為23點59分50秒,等待10秒鍾,看看自動備份能否成功。如果成功那就大功告成了!!

閱讀全文

與exp命令詳解相關的資料

熱點內容
h5上傳圖片前壓縮 瀏覽:119
昆侖通泰觸摸屏怎麼編譯 瀏覽:379
程序員函數模塊 瀏覽:20
linuxgrep命令 瀏覽:63
變頻壓縮機不起 瀏覽:244
圍巾的諧音是什麼app 瀏覽:455
java2圖形設計 瀏覽:818
連續的批處理命令 瀏覽:713
安卓怎麼進美團 瀏覽:463
如何使用網頁伺服器 瀏覽:389
兒童學珠算好還是手指速演算法好 瀏覽:188
小紅書耳機解壓視頻 瀏覽:1000
華為手機主題app在哪裡找 瀏覽:926
安卓微信怎麼沒有炸彈 瀏覽:87
競彩app哪個正規 瀏覽:831
絕密文件夾鎖怎麼破解 瀏覽:31
程序員騷擾 瀏覽:385
個人伺服器還是雲主機劃算 瀏覽:43
linuxu盤啟動命令 瀏覽:747
低溶app是什麼 瀏覽:53