#对该文件进行每列取出
cut -f 1 SMS_`date -d '2 days ago' +%Y%m%d`_1.txt SMS_`date -d '2 days ago' +%Y%m%d`_2.txt SMS_`date -d '2 days ago' +%Y%m%d`_3.txt > SMS_`date -d '2 days ago' +%Y%m%d`_1.log
cut -f 2 SMS_`date -d '2 days ago' +%Y%m%d`_1.txt SMS_`date -d '2 days ago' +%Y%m%d`_2.txt SMS_`date -d '2 days ago' +%Y%m%d`_3.txt > SMS_`date -d '2 days ago' +%Y%m%d`_2.log
cut -f 3 SMS_`date -d '2 days ago' +%Y%m%d`_1.txt SMS_`date -d '2 days ago' +%Y%m%d`_2.txt SMS_`date -d '2 days ago' +%Y%m%d`_3.txt > SMS_`date -d '2 days ago' +%Y%m%d`_3.log
#对取出该列的每个文件进行粘贴到部署的SQLLoader里的//home/datebakt_temp.cvs文件里,每列,分开
paste -d, SMS_`date -d '2 days ago' +%Y%m%d`_1.log SMS_`date -d '2 days ago' +%Y%m%d`_2.log SMS_`date -d '2 days ago' +%Y%m%d`_3.log > /home/datebak/t_temp_`date -d '2 days ago' +%Y%m%d`_TAB.cvs
#删除空格
sed s/[[:space:]]//g t_temp_`date -d '2 days ago' +%Y%m%d`_TAB.cvs> t_temp_`date -d '2 days ago' +%Y%m%d`_SMS.cvs
rm -rf t_temp_`date -d '2 days ago' +%Y%m%d`_TAB.cvs
#awk '$4=",SMS"' t_temp_`date -d '8 days ago' +%Y%m%d`.cvs
说明:
查找
awk ‘/101/’ a.txt 显示文件a.txt中包含101的匹配行。
awk ‘/101/,/105/’ a.txt 显示文件a.txt中包含101的匹配行在105范围之内
查看每行有多少列 (在第二列显示)
awk '{print NR,NF,$1,$NF}' a.txt
查看需求列大于需要值则显示满足的行记录
df | awk '$4>1000000 ‘ 通过管道符获得输入,如:显示第4个域满足条件的行。
cat a.txt | awk '$5>600
awk -F "|" '{print $1}' a.txt 按照新的分隔符“|”进行操作
##通过设置输入分隔符(FS=”[: /t|]”)修改输入分隔符,使每一列对齐
awk 'BEGIN {FS="[: /t|]"}{print $1,$2,$3,$4,$5,$6,$7,$8,$9}' a.txt
awk ‘BEGIN { OFS=”%”} {print $1,$2}’ file 通过设置输出分隔符(OFS=”%”)修改输出格式
##查看第二行是否大于1,大于则high 否则low 显示 (if else then)
awk '{print ($2>1 ? "high "$2:"low " $2 )}' a.txt
##使用第二行%2,并除后得到的结果
awk '{$2 %=2;print $2}' a.txt
##找到匹配行后先将第3个域替换后再显示该行(记录)。
awk ‘{$1 == ‘Chi’ {$3 = ‘China’; print}’ file
1.查看行记录
sed -n '2'p filename --查看filename文件第二行
sed -n '1,3'p filename --查看filename文件第一和第三行
sed -n '1,$'p filename --$表示最后一行
sed "/NO/,/to/p" test.log -n --输出在这之间的全部内容
2.查看匹配的行记录
sed -n '/the/'p filename --查看filename 匹配the行记录
sed -n '4,/The/'p filename --查看第四行查看带有the
sed -n '/.*ing/'p filename --查看以ing结尾的单词(.不能少)
sed -n -e'/delete/'p file_del.log --打印存在delete行并记录行号
3.删除行记录
sed '1'd ( '1,3'd '$'d '/Neave/'d) filename --删除第一行(1到3行,最后一行,匹配Neave的行
sed "1,/from/d" sedtest.txt --删除包括从第一行到第一个包含from字符串的行之间的所有内容
sed -e '3,7!d' sedtest.txt --删除3-7行之外的所有行
sed -e '1,/from/!d' sedtest.txt --找到包含from字符串的行,删除其后的所有行
4.记录中增加字符或文本
sed s'/nurse/"hello "&/' filename --在nurse前添加 "hello"
sed s'/nurse/ hello &/' filename --在nurse前添加 hello
sed '/company/r append.txt' filename --在company后面添加 append.txt文件内容,字符不起作用
sed '/company/'q filename --第一次匹配就退出
sed '/delete/'i/ "soeiowieow" test.log --在delete前面插入soeiowieow来自文件test.log
sed "s/Check/(&)/g" test.log --给全部Check字符串添加()
sed "/Check/s/.*/(&)/" test.log --给包含Check行外添加()
5.替换字符
sed '/company/' c/ "Then" filename --用户Then来替换company
sed -e "/is/c//*******" test.log --替换包含is字符串匹配行为*******
sed "/But/s/is/are/g" sedtest.txt --包含But字符行出现is替换为are
sed "s/is/are/5" sedtest.txt --把每行is出现的第五次替换成are
sed "1,10w sed.out" sedtest.txt -n --将sedtest.txt中1-10行的内容写到sed.out文件中
sed "1r sedappend.txt" sedtest.txt --将sedappend.txt中的内容附加到sedtest.txt文件的第一行之后
sed "y/abcdef/ABCDEF/" sedtest.txt --将sedtest.txt中所有的abcdef小写字母替换成ABCDEF大写字母
sed s/[[:space:]]//g t_temp_TAB.cvs>t_temp.cvs --把空格给退换为空
find / -amin -10 # 查找在系统中最后10分钟访问的文件
find / -atime -2 # 查找在系统中最后48小时访问的文件
find / -empty # 查找在系统中为空的文件或者文件夹
find / -group cat # 查找在系统中属于 groupcat的文件
find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
find / -mtime -1 #查找在系统中最后24小时里修改过的文件
find / -nouser #查找在系统中属于作废用户的文件
find / -user fred #查找在系统中属于FRED这个用户的文件
1.把每列文件通过,连接
paste -d, part1 part2 part3 part4 > part
2.分开每列文件
cut -f 1 文件名称 > part
cut -f 2 文件名称 > part
3.匹配的行
sed -n '/,5,/'p part > part5