awk和sed常用记录

############## awk ###############

# 第一列求和
cat aaa.txt | awk '{sum+=$1} END {print "Sum = ", sum}'
# 把列式转为逗号隔开的数据
awk -F' ' '{print $1}' uids | xargs | tr ' ' ',' >> uids_row
# 取第二列为新文件:
cat uid.txt | awk '{print $2}' >> new_uid.txt
# 取第一列数据:
awk -F':' {print $1} passwd
# 取passwd文件第一列和第七列并加表头
awk -F':' 'BEGIN{print "name\tshell"} {print $1"\t"$7} END{print "from passwd"}' passwd

############## sed ###############

-d 删除符合条件的行
-p 显示符合条件的行
-a \string 指定的行后面追加新行,内容为string
-i \string 指定的行前面添加新行,内容为string
-s/pattern/string/修饰符 查找并替换,默认只替换每行中第一次被模式匹配到的字符串
    g 行内全局替换
    i 忽略字符大小写
    s/// s### s@@@
    \(\),引用\1,\2

# 文件最后一行插入文字
sed -i '$a\要插入的文字' file.txt($匹配文件的最后一行)
# 在第三行下面添加一行文字
sed -i '3a\插入的文字' sed.txt

# 在第二行下面加一行hello world 
sed "2a\hello world" sed.txt 输出到控制台,不改变原文件
sed -i "2a\hello world" sed.txt 无输出,改变原文件
# 删除apple的行
sed "/apple/d" sed.txt
# 去掉空行 
sed '/^\s*$/d' userid.txt

# 替换initial文本中的id:3:initdefaule:中的数字3
sed -i "s/\(id:\)[0-6]\(:initdefault:\))/\15\2/" inittab

# 修改某一行的某个内容前面加内容
sed -i "s/world/hello world/" sed.txt

# 多行合为一行:
# 逗号两边的引号去掉
sed -i "s/','/,/g" aaa
# 去掉单引号
sed -i "s/'//g" aaa
# 去掉换行预览
sed ':a ; N;s/\n/ / ; t a ; ' aaa
# 去掉\n,去掉换行
sed -i ':a ; N;s/\n/ / ; t a ; ' aaa
# 把空格去掉
sed "s/ //g" aaa
发布了31 篇原创文章 · 获赞 9 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/sosemseo/article/details/104059944
今日推荐