panda讀取excel中的資料,並將資料存入postgresql中
阿新 • • 發佈:2022-05-06
一、簡介
非互動式的處理 一行一行的讀入處理 佔用系統空間少 大檔案一般用sed節省記憶體
語法:語法 sed [選項] '行的定位 動作' 檔案...
引數 | 說明 |
-e | 允許進行多項編輯 |
-n | 靜默輸出 關閉模式空間的輸出 不會輸出未匹配的行 一般與p命令聯合使用 |
-r | 允許使用擴充套件正則 |
-i | 直接作用於原檔案 沒有輸出 在使用前先不加 看看效果 |
-i.bak | 修改原檔案前先備份 |
-f | 後接sed指令碼 |
二、示例
命令 | 說明 |
---|---|
sed -r 's/(.)(.)/\2/' pass | 刪除每行的第一個字元 |
sed -r 's/(.)/hello\0/' pass |
在每行行首插入hello |
sed -r 's/(.)(.)/\1/' pass | 刪除每行的第二個字 |
sed -r 's/[0-9]/(\0)/g' pass | 把每個數字用()括起來 如:(1)(2) |
sed -r 's/[0-9]+/(\0)/g' pass | 把每個數值用()括起來 如:(12) |
sed -r 's/(.)(.)$/\2/g' pass | 刪除每行的倒數第二個字元 |
sed -r 's/(.)(.*)(.)/\3\2\1/g' pass | 交換每行的第一個和最後一個字元 |
sed -r 's/<[a-zA-Z]{3}>//g' pass | 刪除剛好三個字元的單詞 |
sed -r 's/ro | da/A/g' pass |
把ro或da替換成A |
sed -r 's/[a-zA-Z]+//' pass | 刪除每行的第一個單詞(純字母) |
sed -r 's/([a-zA-Z]+)(.*)(<[a-zA-Z]+)(a-zA-Z)([a-zA-Z]+)$/\3\2\1\4\5/g' pass | 交換第一個和倒數第二個單詞(純字母) |
sed 's/root/ROOT/2' /tmp/passwd | 把第二個root替換成ROOT |
sed 's/root/ROOT/g2' /tmp/passwd | 把每一行第二個開始的root替換成ROOT |
cat -n /etc/passwd > /tmp/pass | 將passwd編號寫入到pass |
cat -n /etc/passwd | head >/tmp/pass |
將passwd前十行編號寫入到pass |
sed -r 's/\b[a-zA-Z]{4}\b/AAAA/g' pass | 將剛好4個字元的單詞替換成AAAA (abcd) |
sed 's/b{4}/AAAA/g' pass | 將bbbb替換成AAAA |
三、加引數示例
命令 | 說明 |
---|---|
sed -nr '/^root/p' /tmp/pass | 以root開頭行 |
sed -n '1~2' /xx/xx | 奇數行 |
sed -n -e '2p' -e '5p' /tmp/pass | 2 5行 |
sed -n -e '2p;5p' /tmp/pass | 2 5行 |
sed -n -e '2,5p' /tmp/pass | 2-5行 |
sed -nr '/sh/,/xx/p' /tmp/pass | 以sh開始 以xx結尾 |
sed -n -f sed.sh /tmp/pass | 接sed指令碼 |
sed '1!d' passwd | 刪除除第一行以外的所有行 |
sed '/root/ w /tmp/a.txt' passwd | 將passwd含root的行寫入到/tmp/a.txt裡 |
sed '2 i hello' passwd | 在第二行前面插入hello |
sed 'y/abc/ABC/' passwd | 將passwd裡的abc一一對應替換成ABC |
sed 's/[a-z]/\u&/g' passwd | 小寫字母換成大寫字母 |
sed 's/[A-Z]/\l&/g' passwd | 大寫字母換成小寫字母 |
sed '2 a hello' passwd | 在第二行後面追加hello |
sed '2 c hello' passwd | 將第二行替換成hello |
sed -n '2{n;p}' passwd | 列印第二行的下一行 |
sed '8q' passwd | 處理第8行後退出sed |
四、模式空間,保留空間
模式空間:用於處理文字行
保留空間:用於儲存已處理完的文字行 最大儲存8192位元組 預設有一個空行
命令:d 刪除模式空間裡的內容,開始下一個迴圈
h H 複製/追加模式空間的內容到保留空間
g G 複製/追加保留空間的內容到模式空間
x 交換保留空間和模式空間的內容
命令 | 說明 |
---|---|
sed '1h;1d;2G' passwd | 將第一行第二行替換輸出 |
sed '1h;1d;2G;2h;2d;3G' passwd | 輸出3 2 1行 2G後2 1行為一個整體2行 |
sed '1,$ a \ ' passwd sed 'G' pass | 每行後面加上空行 |
sed '1h;1d;2,9{G;h;d;};10G ' passwd | 從末尾往上檢視檔案 |
sed '1!G;$!h;$!d' pass | |
sed -r '1h;2~2G ' passwd | 在偶數行下新增第一行的內容 |
sed '/sh$/ r /etc/redhat-release' pass | 在sh結尾的行下方插入檔案內容 |
五、匹配換行符
sed ":label;N;s/\n/ /;b label" test.txt
正常情況下sed無法匹配換行符,這是因為sed 模式是以\n換行符作為行的結束標記的
label: 這是一個標籤,用來實現跳轉處理,名稱可自取,後面的 b label 就是跳轉指令 N: N是sed的一個處理命令,追加文字流中的下一行到模式空間進行合併處理,因此是換行符可見 s/\n/ /: 替換命令,將換行符替換成空行 b label: b是sed的跳轉命令,跳轉到指定的標籤處