grepコマンド
1.grep形式
grep root passwad 在passwd中过滤root
grep ^root passwd 过滤以root开头的信息
grep root$ passwd 过滤以root结尾的信息
grep -i root passwd 忽略大小写
grep -E "\<root" passwd root字符之前不能有字符
grep -E "root\>" passwd root字符之后不能有字符
grep -3 lebron passwd 显示关键字与其前后三行
grep -n lebron passwd 显示匹配行所在行号
grep -A3 lebron passwd 显示匹配行以及下面3行
grep -B3 lebron passwd 显示匹配行以及上面3行
grep -v 反向过滤
grep root passwd filter root inpasswd
grep -i root passwdフィルターroot in passwd(大文字と小文字を区別しない)
grep -i ^ root passwd passwdのrootで始まる行をフィルタリングします(大文字と小文字は区別されません)
grep -i root $ passwdフィルター行がpasswdのrootで終わる(大文字と小文字を区別しない)
grep -iE“ ^ root | root $” passwdはrootで始まるか、rootで終わります
grep -iE "^ root | root $" passwd-vルートの最初または最後を削除します
grep -iE "<root" passwdルートの前に文字がありません
grep -iE "root>" passwdrootの後に文字がありません
grep -iE "<root>" passwd rootには、前後の文字を含めることはできません
grep -2 ROOT passwdは、キーワードの行とその前後の2行を表示します
grep -B2 ROOT passwdは、キーワードの行とその前の2行を表示します
grep -A2 ROOT passwdは、キーワードが配置されている行と次の2行を表示します
grep -n ROOT passwdは、キーワードの行とその行番号を表示します
2.Grep文字番号マッチングルール
w...s w开头,s结尾中间任意3个字符
....s s结尾前面任意4个字符
"ws*" w、s出现任意次
"ws?" w、s出现0-1次
"ws+" w、s出现1-任意次
"ws{5}" 出现5次
"ws{3,5}" 出现3-5次
"ws{,5}" 出现0-5次
"ws{0,5}" 出现0-5次
"ws{2,}" 出现2-任意次
"(ws){2}" “ws”这个字符作为整体出现2次
grep -E "w ... s" westos
grep -E“…s” westos
grep -E "in ..." westos
grep -E“ ws *” westos
grep -E「ws?」ウェストス
grep -E“ ws +” westos
grep -E“ ws {4}” westos
grep -E“ ws {2,4}” westos
grep -E“ ws {、4}” westos
grep -E“ ws {3、}” westos
grep -E“(gb){2}” westosgbは全体で2回表示されます
grep -E "(gb){、2}" westosgbは全体として最大2回表示されます
grep -E "w(gb){1,2} s" wとsgbの間のwestosは、全体として最大2回表示されます。
sedコマンド
p 打印(需加 -n)
d 删除
a 追加
i 插入
c 更改/替换
w 写入
r 整合文件
's/xx/xx/g' 字符替换
- pプリント
sed -n '3p'westosはwestosの3行目を表示します
sed -n '3,7p' westos display westos 3〜7行
sed -n '3p; 7p' westosは、westosの3行目と7行目の内容を表示します。
sed -n '$ p'westosはwestosの最後の行を表示します
sed -n '/ ^ daddy / p'パパで始まるpasswd表示行
sed -n '/ bash $ / p'passwdは、bashで終わる行を表示します
- d削除
sed '1,2d' westosはwestosの行1と2を削除し、表示します
sed '1d; 4d' westos westosの行1と4を削除し、表示します
sed '/ ^ p / d'westosは、westosのpで始まる行を削除して表示します
sed '/ g $ / d'westosは、westosのgで終わる行を削除して表示します
sed '/ g $ /!d' westosは、g以外の行を削除して表示します(前の手順の逆の操作)。
- 追加
sed'aoligay 'westosは、westosの各行の後にoligayを追加します
sed '$ aoligay' westosは、westosの末尾にoligayを追加します
sed '1aoligay' westosは、westosの最初の行の後にoligayを追加します
sed '/ gg / aoligay' westos / gg /は、この行の後に追加することを意味します
sed '/ pig / aoligay \ nbro' westos \ nはニューラインです
- 挿入します
i与a的不同在于,a在指定行后追加,i在指定行前插入
sed '3i hhhhhh' westosは、westosの3行目の前にhhhhhを挿入します
sed '$ i hhhhhh' westosは、westosの終わりの前にhhhhhを挿入します
sed '/ pig / i hhhhhh' westoswestosの行/ pig /の前にhhhhhを挿入します
sed '/ pig / i hhhhhh \ ngg' westoswestosの行/ pig /の前にhhhhhggを挿入します
- c変更
sed '$ c dsb'passwd最後の行をdsbに置き換えます
sed '/ bash $ / c dsb' passwdは、bashで終わる行をdsbに置き換えます。
sed '/ ^ lbj / c dsb' passwdは、lbjで始まる行をdsbに置き換えます。
- w書き込み
sed '/ hey / w file' westos
- r統合
sed '2r file' westosは、ファイルファイルの内容をwestosの2行目にマージします
sed '$ r file' westosは、ファイルファイルの内容をwestosの末尾にマージします
- 交換
sed '1,3s / bash / dunk /' passwdpasswdの1行目と3行目のbashをdunkに置き換えます
sed's / lbj / kobe / g; s / bash / gkd / g'passwdpasswd内のすべてのlbjをkobeに置き換えます;すべてのbashをgkdに置き換えます
sed '/ westos /、/ zxn / s / bash / hhh / g'passwdpasswdのwestosとzxnの間のbashをhhhに置き換えます
sed's /// @ / g'passwdはpasswdのすべての/を@に置き換えます
sed's @ / @:@ g'passwdは、区切り文字が@に変更されていることを除いて、前のコマンドと同じ効果があります。
awkコマンド
格式:
awk -F 分隔符 BEGIN{}{}END{} filename
NR 行数
NF 每行的列数
FILENAME 文件名称本身
“westos” 字符串
$1 指定列数
awk -F: '{print NR}' passwdは、ファイルのすべての行を表示します
awk -F: '{print NF}' passwdは、ファイルの各行の列数を示します
awk -F: '{print $ 1}' passwdは、ファイルの最初の列の内容を表示します
awk -F: '{print FILENAME}' passwdはファイル名を表示します(複数行ある場合、元のファイルは数回表示されます)
awk -F: '{print“ ohou”}' passwdは入力文字列を表示します(元のファイルには数行あり、数回表示されます)
/bash$/ 条件:以bash结尾
/条件1/ | | /条件2/ 条件1或条件2
/条件1/ && /条件2/ 条件1、2同时成立
awk -F: 'BEGIN {print“ name”} / bash $ / {print $ 1} END {print“ over”}' passwd
awk -F: 'BEGIN {print“ name”} / bash / ∣ ∣ / nologin / || / nologin/ ∣ ∣ / n o l o g i n / {print $ 1} END {print“ over”} 'passwd
awk -F: 'BEGIN {print“ name”} / bash $ / || / ^ root / {print $ 1} END {print“ over”}' passwd
awk -F: '$ 1〜 / root / {print $ 1}' passwd
awk -F: ' 7 / nologin 7〜 / nologin7 / n o l o g i n / {print $ 1} 'passwd
宿題
演習1:
システムで使用できるすべてのユーザー名を一覧表示します
演習2:
スクリプトapache.shを作成して、このスクリプトの実行後にhttpdポートを変更して数値を入力できるようにします。
演習3:
システム内のユーザーが使用でき、ホームディレクトリが/ homeにないユーザーの数を数えます