Linux 字符操作命令集锦
Linux 字符操作命令集锦
cut\grep\awk\sort\sed\head\tail\cat\paste\wc\uniq\diff\patch\tr 第一、扣取列 1.#cut -d: -f 1,3,4 file 选项:-d 定义分隔符 -f 指定扣取的列的位置 #cut -c0-6 file 选项:-c 定义扣取从开头算起的6个字符 第二、截取行 2.#grep -i -v "^system" file 选项: -i 表示忽略大小写 -v 表示不包括 -n 表示显示结果所在行号 -E 表示支持扩展的正则表达式 ^ 表示以“system”开头 $ 表示以“关键字”结尾 ^$ 表示空行 . 表示一个任意字符 * 表示前一个字符重复任意次 [] 匹配可能得字符 #grep -Ev '^#|^$' /etc/postfix/main.cf 关键字:以 #开始或(|)空行--------其中 “|” 需要-E 参数的支持 #grep -E [0-9]abc$ :关键字表示--以"abc"结尾且之前有一个数字 [0-9]\{11} :关键字表示--11位数字 [0-9]{1,3} : 关键字表示--1-3位数字 #egrep 是扩展功能的grep 例: egrep '2|5' 1.txt 列出还有2或5的行 egrep '33(2|5)' 1.txt 列出包含33,而且后边跟的是2或者5的行 #grep 进阶 grep -h select * 列出当前目录下所有包含select关键字的行 grep -l select * 列出当前目录下所有包含select关键字的文件名 -----------------------------正则表达式 第三、文件内容提取 3.#awk -F --------用于文件内容分段提取 如:显示系统中UID=0的用户名 #awk -F :'$3==0{print $1}'/etc/passwd 如显示系统中密码为空的用户名 #awk -F : 'length($2)==0 {print $1}' /etc/shadow #awk '{print $9}' 当没有指定分隔符时,默认以空格分隔,且多个连续空格会认为是一个空格。 查看/etc 目录中属主是 root 的文件名称 # ll /etc | awk '{if ($3=="root") print $9}' awk引用变量# awk '$1== " '$a ' " {print $0} ' file.txt |
# awk '$1== " '$a ' " {print $0} ' file.txt |
选项:-i 修改源文件并保存。没有改选项时,修改后内容显现都屏幕上,但是源文件并没有改变 -r 支持扩展的正则表达式(用以支持比较复杂的正则表达式) -e 以选项中指定的script来处理输入的文本文件(此处的脚本 ” s“)
script 结构 :'行描述[/正则表达式/]动作' 例:删除 # sed '5d' filename 删除第5行,显示其他行 #sed '1,3d' filename 删除1-3行,显示其它行 #sed '4,$d' filename 删除从第4行到末行,显示其它行 替换 #sed 's/222/333/g' filename 将所有的222取代为333 转换 #sed '1,3y/[a-z]/[A-Z]/' filename -------正则表达式 . --用于匹配任意一个字符 * --用于匹配它前面字符的任意多次 ^ --用于匹配行首 $ --用于匹配行尾 [char] --用于匹配括号字符集中的某一个字符 []:匹配符 {} :枚举 [^char] --用于匹配没有在char字符集中的字符 \ --用于转义某个特殊含义的字符 \<the\> --用于完整匹配单词“the”,不会匹配“them”,"there","other" /^$/ 表示空行 /^.*$/ 表示一整行 /*/ 表示一个或多个空格 [0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\} 表示ip地址 --------动作 -s 替换指定内容#sed -e -i 's/defaults/hello/g' /etc/file -d 删除指定行 #sed -i -e '1,3d' /etc/file (删除1--3行) #sed -e -i '/^#/d' /etc/file (删除以#开头的行) -i 匹配行前插入 -a 匹配行后附加 -c 匹配行替换
评论暂时关闭