当前位置: 技术问答>linux和unix
请教sed的用法
来源: 互联网 发布时间:2016-08-07
本文导语: 脚本如下 #/bin/sh check_dir="/home/lytbak/oracle_backup" filenumber=`ls -l $check_dir/*.gz | wc -l` if [ "$filenumber" -gt "1" ]; then while [ "$filenumber" -gt "3" ] do filename=`ls $check_dir/*.gz -t -r -l | sed -n '1p' | awk '{print $9}'` rm -rf $f...
脚本如下
#/bin/sh
check_dir="/home/lytbak/oracle_backup"
filenumber=`ls -l $check_dir/*.gz | wc -l`
if [ "$filenumber" -gt "1" ]; then
while [ "$filenumber" -gt "3" ]
do
filename=`ls $check_dir/*.gz -t -r -l | sed -n '1p' | awk '{print $9}'`
rm -rf $filename
echo "`date +%F' '%r` deleted file $filename" >>/home/lytbak/oracle_backup/oracle_back_del.log
filenumber=`ls -l $check_dir/*.gz | wc -l`
done
else
echo "`date +%F' '%r` NO file to delete" >>/home/lytbak/oracle_backup/oracle_back_del.log
fi
echo "`date +%F' '%r` file check OK !!" >>/home/lytbak/oracle_backup/oracle_back_del.log
我不明白的是filename=`ls $check_dir/*.gz -t -r -l | sed -n '1p' | awk '{print $9}'`
对这边的sed用法不太懂,还有这个-n参数,作用是:读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。
意思不太明白,什么叫 “用下一个命令处理新的行而不是用第一个命令”
是不是要放在循环语句里面用??
#/bin/sh
check_dir="/home/lytbak/oracle_backup"
filenumber=`ls -l $check_dir/*.gz | wc -l`
if [ "$filenumber" -gt "1" ]; then
while [ "$filenumber" -gt "3" ]
do
filename=`ls $check_dir/*.gz -t -r -l | sed -n '1p' | awk '{print $9}'`
rm -rf $filename
echo "`date +%F' '%r` deleted file $filename" >>/home/lytbak/oracle_backup/oracle_back_del.log
filenumber=`ls -l $check_dir/*.gz | wc -l`
done
else
echo "`date +%F' '%r` NO file to delete" >>/home/lytbak/oracle_backup/oracle_back_del.log
fi
echo "`date +%F' '%r` file check OK !!" >>/home/lytbak/oracle_backup/oracle_back_del.log
我不明白的是filename=`ls $check_dir/*.gz -t -r -l | sed -n '1p' | awk '{print $9}'`
对这边的sed用法不太懂,还有这个-n参数,作用是:读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。
意思不太明白,什么叫 “用下一个命令处理新的行而不是用第一个命令”
是不是要放在循环语句里面用??
|
还要举什么例子啊 知道参数的意思了 自己多尝试一下才好
一个字母作为参数和作为语句里面的操作符 他们的含义是不同的
一个字母作为参数和作为语句里面的操作符 他们的含义是不同的
|
-n, --quiet, --silent
suppress automatic printing of pattern space
说得很明白了,不加 -n会把所有行输出, 加 -n只输出指行
你说的下一行是这样的用法
ls | sed -n '/aa/np'
把先找到有aa字串的行,然后把这一行的后一行打印出来。
suppress automatic printing of pattern space
说得很明白了,不加 -n会把所有行输出, 加 -n只输出指行
你说的下一行是这样的用法
ls | sed -n '/aa/np'
把先找到有aa字串的行,然后把这一行的后一行打印出来。
|
1楼正解