Sed 靜默替換檔案內容 以及 awk 的簡單使用

2022-01-29 16:39:37 字數 3011 閱讀 2016

1. sed的help 

usage: sed [option]...  [input-file]...

-n, --quiet, --silent

suppress automatic printing of pattern space

-e script, --expression=script

add the script to the commands to be executed

-f script-file, --file=script-file

add the contents of script-file to the commands to be executed

--follow-symlinks

follow symlinks when processing

inplace

-i[suffix], --in-place[=suffix]

edit files

in place (makes backup if

suffix supplied)

-c, --copy

use copy instead of rename when shuffling files

in -i mode

-b, --binary

does nothing;

for compatibility with win32/cygwin/msdos/emx (

open files

in binary mode (cr+lfs are not treated specially))

-l n, --line-length=n

specify the desired line-wrap length for the `l'

command

--posix

disable all gnu extensions.

-r, --regexp-extended

use extended regular expressions

inthe script.

-s, --separate

consider files

as separate rather than as

a single continuous

long

stream.

-u, --unbuffered

load minimal amounts of data

from

the input files and flush

the output buffers more often

-z, --null-data

separate lines by nul characters

--help

display

this

help and exit

--version

output version information and exit

2. 感覺用的最多的就是 sed -i 靜默本地替換檔案內容.

簡單的練習

vim zhaobsh.txt

zhaobsh is

cainiao

zhaobsh

is cainiaocainiao

儲存之後進行替換

1. 每行增加乙個 yes 

2. 沒個末尾增加乙個 enough

sed -i '

s/$/ enough/

' zhaobsh.txt

效果

3. 將 cainiao 替換才caibi

4. 替換所有的菜鳥的命令

sed -i '

s/cainiao/caibi/g

' zhaobsh.txt

5. 刪除 包含某字元的一整行

sed -i '

/enough/d

' zhaobsh.txt

備註 這裡會刪掉 enough 所在的整行資訊.

簡單的學習一下  後續工作中 會越來越多的用到.

其他的命令暫時還沒學. 用到了 再繼續整理.

備註 一些正規表示式的定義相關

^ 表示一行的開頭。如:/^#/以#開頭的匹配。

$ 表示一行的結尾。如:/}$/以}結尾的匹配。

\< 表示詞首。 如 \

\> 表示詞尾。 如 abc\>表示以 abc 結尾的詞。

. 表示任何單個字元。

*表示某個字元出現了0次或多次。

[ ] 字元集合。 如:[abc]表示匹配a或b或c,還有[a-za-z]表示匹配所有的26個字元。如果其中有^表示反,如[^a]表示非a的字元

awk的簡單使用 顯示 檔案的一部分內容

之前刪除所有 error的機器 的方法就是使用 awk 來的 

1. 建立測試檔案

netstat  -ano >awk.txt

顯示所有 第八專案為"/run/systemd/journal/stdout" 的內容

awk '

$8=="/run/systemd/journal/stdout"

' awk.txt

sed直接替換檔案內容

sed i s zhangsan lisi g grep zhangsan rl modules 解釋一下 i 表示inplace edit,就地修改檔案 r 表示搜尋子目錄 l 表示輸出匹配的檔名 這個命令組合很強大,要注意備份檔案。1 sed y 1234567890 abcdefghij te...

sed直接替換檔案內容

sed i s zhangsan lisi g grep zhangsan rl modules 解釋一下 i 表示inplace edit,就地修改檔案 r 表示搜尋子目錄 l 表示輸出匹配的檔名 這個命令組合很強大,要注意備份檔案。1 sed y 1234567890 abcdefghij te...

sed直接替換檔案內容

sed i s zhangsan lisi g grep zhangsan rl modules 解釋一下 i 表示inplace edit,就地修改檔案 r 表示搜尋子目錄 l 表示輸出匹配的檔名 這個命令組合很強大,要注意備份檔案。1 sed y 1234567890 abcdefghij te...