shell 小技巧

截取字符串

file=/dir1/dir2/dir3/my.file.txt

可以用${ }分别替换得到不同的值:

${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt

${file##*/}:删掉最后一个 / 及其左边的字符串:my.file.txt

${file#*.}:删掉第一个 . 及其左边的字符串:file.txt

${file##*.}:删掉最后一个 . 及其左边的字符串:txt

${file%/*}:删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3

${file%%/*}:删掉第一个 / 及其右边的字符串:(空值)

${file%.*}:删掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file

${file%%.*}:删掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my

获取日期

DAY=date +%Y%m%d /当天日期
yesterday=date -d"1 day ago" +"%Y%m%d" /一天以前的日期
pt_month_ago=date -d "2 month ago" +%Y%m%d /两个月以前的日期

获取两个文件的不同行

grep -vwf file1 file2 (file2中存在file1中不存在的)
grep -wf file1 file2(提取公共部分)
grep -vwf file1 file2 && -vwf file2 file1(提取文件不同部分)

文件去重

sort file | uniq
注意:重复的多行记为一行,也就是说这些重复的行还在,只是全部省略为一行!
sort file | uniq –u
上面的命令可以把重复的行全部去掉,也就是文件中的非重复行!

文件按照某一列排序

sort -n -k 2 -t : facebook.txt // -t 指定分隔符,按照第2列排序

posted @ 2020-02-11 15:13  尔玉  阅读(113)  评论(0编辑  收藏  举报