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列排序