1  解压文件,移动文件,删除特定目录

#!/bin/bash
pa=$(cd `dirname $0`; pwd) //获得当前目录的绝对路径
v_dir=${pa}"/"$1
mkdir ${v_dir}
dirDist=${v_dir}"/utxt/soft/eventd_bej/backup"
echo "pa= "${pa}
echo "v_Dir= "${v_dir}
echo "dirDist= "${dirDist}
tar -zvxf $1".tar.gz" -C ${v_dir}
mv  `find ${dirDist}"/" -name "*o"` ${v_dir}"/"
rm -rf ${v_dir}"/utxt/"

 

2 文本操作工具

 

sed  修改和编辑文本文件中的某些行
awk  访问和操作某些数据
grep 搜索

 

#!/bin/bash

# KpiAggregator run script(mainly for crontab)
# author: Alfred
# created: 2015/08/31
# history:
#   2015/08/31 - add sourcing /etc/profile and ~/.bash_profile to solve crontab env problem

. /etc/profile
. /home/sms/.bash_profile

v_dir=$(dirname $0)
v_basename=$(basename $0 .sh)
v_logname=${v_dir}/${v_basename}

# parameters
v_topo_index=$(echo $v_basename | awk -F'_' '{print $3}')
v_redis_url=$(grep "^${v_topo_index}.redis.url" $v_dir/config.ini | awk -F '=' '{print $2}' | head -1)
v_db_driver=$(grep "^${v_topo_index}.db.driver" $v_dir/config.ini | awk -F '=' '{print $2}' | head -1)
v_db_url=$(grep "^${v_topo_index}.db.url" $v_dir/config.ini | awk -F '=' '{print $2}' | head -1)
v_db_user=$(grep "^${v_topo_index}.db.user" $v_dir/config.ini | awk -F '=' '{print $2}' | head -1)
v_db_password=$(grep "^${v_topo_index}.db.password" $v_dir/config.ini | awk -F '=' '{print $2}' | head -1)
v_monitor_time=$(grep "^${v_topo_index}.monitor.time" $v_dir/config.ini | awk -F '=' '{print $2}' | head -1)

 

3 循环和条件判断

 

在此说一下我常用的两个结构:
1.
for i in $(seq 1 100); do
        echo $i
done
2.
for (( i = 1 ; $i <= 100; i++ )) ;do
         echo $i;
done

 

4 分组排序测试

#!/bin/bash
cat /nfsdata/chaintest/*.dat|awk -F ',' '{gp=strtonum("0x"substr($1,length($1)-2))%32;ci=gp<10?"00"gp:"0"gp;print >"/nfsdata/chaintest/S_"ci".txt"}';
i=0;
mkdir -p /nfsdata/tmp;
while test $i -lt 32
do
if
test $i -lt 10
then
ci=00$i
else
ci=0$i
fi
sort -u -k 1 -k 2 -t , -T /nfsdata/tmp /nfsdata/chaintest/S_${ci}.txt -o /nfsdata/chaintest/PS_${ci}.txt;i=`expr $i + 1`;
done;
rm -r /nfsdata/tmp;

 

5 sed 和 awk学习

shell 脚本样例

转换格式
dos2unix filename 
去除文件中的双引号
sed 's/\"//g' filename >> rs1
删除第一列
awk '{$1="";print $0}' rs1 >> rs2
删除行首空格
sed 's/^[ \t]*//g' rs2 >> rs3
删除空行
sed '/^$/d' rs3 >> rs4
空格变为逗号
sed 's/ /,/g' rs4 >> rs5

删除最后一行
sed -i '$d' filename
删除第3行
sed -i '3d' filename

 扩展阅读

在UNIX上使用sed命令进行字符串处理中常常遇到的问题就是行首行尾的空格怎么删除。
下面介绍sed是怎样实现的,当然awk同样可以。

1:行首空格
sed 's/^[ \t]*//g'
说明:
第一个/的左边是s表示替换,即将空格替换为空
第一个/的右边是表示后面的以xx开头
中括号表示“或”,空格或tab中的任意一种。这是正则表达式的规范。
中括号右边是*,表示一个或多个。
第二个和第三个\中间没有东西,表示空
g表示替换原来buffer中的,sed在处理字符串的时候并不对源文件进行直接处理,先创建一个buffer,但是加g表示对原buffer进行替换

整体的意思是:用空字符去替换一个或多个用空格或tab开头的本体字符串

2:行末空格
sed 's/[ \t]*$//g'

和上面稍微有些不同是前面删除了^符,在后面加上了美元符,这表示以xx结尾的字符串为对象。

但是要注意在KSH中,Tab并不是\t而是直接打入一个Tab就可以了。

3删除所有的空格

sed s/[[:space:]]//g
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-01-27
  • 2021-10-09
  • 2021-08-28
  • 2021-12-18
猜你喜欢
  • 2021-11-30
  • 2022-02-08
  • 2022-02-08
  • 2022-01-24
相关资源
相似解决方案