赞
踩
sed 可以对文件中的文本内容进行过滤和修改,它的原理是逐行读入文本内容,根据模式匹配符合条件的文本,然后做操作。
# 向 xiyou.txt 文件写入多行内容 cat > xiyou.txt << EOF x y XIYOU. xiyou. 952 9527 9527777 95277777777777777777777 9527xiyou. xiyoucloud. xiyou. xiyouyun or xiyoucloud xiyouyun to be xiyouyun EOF
sed [参数] [内置命令] 文件路径
参数:
内置命令:
范围:默认全文,指定某行,指定范围行,匹配行
# 输出文件的从第2行到第5行的内容 sed -n '1 p' xiyou.txt sed -n '2,5 p' xiyou.txt sed -n '1~2 p' xiyou.txt # 输出包含有 xiyou 的行(过滤) sed -n '/xiyou/ p' xiyou.txt # 增加文件内容(2种方式) sed -i '1 a 在第 1 行的后面增加的文本内容' xiyou.txt sed -i '1 i 在第 1 行的前面增加的文本内容' xiyou.txt sed -i 'a ---------------' xiyou.txt # 删除文件内容,删除第 1 行到第 3 行的内容 sed -i '1,3 d' xiyou.txt # 替换匹配模式, g表示全部替换,默认只替换匹配到的第 1 个 sed -i 's/xiyou/西柚/g' xiyou.txt # 一次性做两次替换 sed -i -e 's/9/九/g' -e 's/5/五/g' xiyou.txt
xargs, 一个用于传递参数的命令。xargs 会将标准输入的文本内容聚合后通过 echo 输出。多行内容会被输出为 1 行内容。因此通常用来构造单行命令。
# <<< 可以给 xargs 提供标准输入 xargs <<< "1 2 3 4" cat xiyou.txt | xargs # n 指定每行最多输出指定个数的参数 cat xiyou.txt | xargs -n 3 # I 可以指定一个符号用于参数的替换 cat xiyou.txt | xargs -I {} echo "hello, {}" # 删除目录下所有的 txt 文件,-0 表示以 \0 做分隔符 find . -type f -name "*.txt" -print0 | xargs -0 rm -f # 将当前目录下的以 py 结尾的文件移到 xiyou 目录中 mkdir xiyou && touch {1..9}.py && ls ls *.py | xargs -I {} mv {} xiyou # 打包当前目录下所有的 png 文件 touch {1..100}.png find . -type f -name "*.png" -print | xargs tar -czvf images.tar.gz
统计文本内容 wc
# 统计文件中的文本信息(行数,单词数,字节数,文件名)
wc xiyou.txt
# 统计文件中文本的行数
wc -l xiyou.txt
# 统计文件名以 txt 结尾的文本的行数
wc -l *.txt
# 统计目录下的文件大小小于10M 的文件的文本内容信息()
find . -type f -size -10M | xargs wc ;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。