Chinaunix首页 | 论坛 | 博客
  • 博客访问: 376661
  • 博文数量: 166
  • 博客积分: 1972
  • 博客等级: 上尉
  • 技术积分: 1845
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-19 21:16
文章分类

全部博文(166)

文章存档

2013年(7)

2010年(159)

分类:

2010-10-13 11:15:49

filecount=($(ls |grep "^bf_gather_fee"))
#定义变量的新方法 可以使用 $(里边为命令处理) 然后再加()
if [ "${#filecount[@]}" -eq "21" ] then

2
用ps -ef | grep a.out时。会显示grep a.out
1.把输出信息去掉
ps -ef | grep a.out>/dev/null 2>&1
2.过滤掉a.out
ps -ef | grep -v a.out #-v 不输出自己。

3
请教如何将一个脚本执行结果同时输出到文件和屏幕中?
通过filename.sh | tee output 2>&1
虽然屏幕中有正确和错误输出,但文件output只有正确输出,如何让output 也存放错误提示呢?
filename.sh 2>&1 | tee output #这句 同时 将输出(错误的、正确的) 输出到屏幕和文件。

for divideLine in `grep -n '^End\ of' SimpleDraw`
#空格需要 转义符


4
有这样的文本:
61.61.173.1  000c86ea440a
61.61.173.5  000aeb14a33e
61.61.173.8  000aeb18ee27
61.61.173.10  00e04c7427bd
转换为:
61.61.173.1 00:0c:86:ea:44:0a
61.61.173.5 00:0a:eb:14:a3:3e
61.61.173.8 00:0a:eb:18:ee:27
61.61.173.10 00:e0:4c:74:27:bd

[root@ytest ken]# cat 1.txt | sed -e 's/ \(..\)\(..\)\(..\)\(..\)\(..\)\(..\)/ \1:\2:\3:\4:\5:\6/g'
61.61.173.1  0:00:c8:6e:a4:40a
61.61.173.5  0:00:ae:b1:4a:33e
61.61.173.8  0:00:ae:b1:8e:e27
61.61.173.10  0:0e:04:c7:42:7bd
[root@ytest ken]# cat 1.txt | sed -e 's/ \(...\)\(..\)\(..\)\(..\)\(..\)\(..\)/\1:\2:\3:\4:\5:\6/g'
61.61.173.1 00:0c:86:ea:44:0a
61.61.173.5 00:0a:eb:14:a3:3e
61.61.173.8 00:0a:eb:18:ee:27
61.61.173.10 00:e0:4c:74:27:bd
[root@ytest ken]# awk '{gsub(/../,"&:",$2);print $1,substr($2,1,length($2)-1)}' 1.txt
61.61.173.1 00:0c:86:ea:44:0a
61.61.173.5 00:0a:eb:14:a3:3e
61.61.173.8 00:0a:eb:18:ee:27
61.61.173.10 00:e0:4c:74:27:bd
[root@ytest ken]# awk '{gsub(/../,"&:",$2)}{gsub(/:$/,"");print}' 1.txt
61.61.173.1 00:0c:86:ea:44:0a
61.61.173.5 00:0a:eb:14:a3:3e
61.61.173.8 00:0a:eb:18:ee:27
61.61.173.10 00:e0:4c:74:27:bd

5
f.txt 内容
/usr/local/mysql
/usr/local/lib
/usr/local/apache2/conf
希望输出结果为 /usr/local/mysql /usr/local/lib /usr/local/apache2/conf
1.sh 即可
#! /bin/sh
while read line
do
#echo $line 
str4read="$str4read $line"
done
echo "$str4read"
谢谢两位,原来用管道就会引入子进程。长见识了:)

6
取出文件的 第一行 第三列 、列以制表符分割
a       b       c
d       e       f
x       y       z
cat 1.txt |  sed -e "${1}p" -n|awk '{print $'3'}'
[root@ytest ken]# cat 1.txt |  sed -e "${1}p" -n|awk '{print $'3'}'
c
f
z


7
我想把awk的结果输入到一个变量中应该怎么办
var=$(awk ...)


新手请教,$#是什么意思?
在很多script中都看到了这个变量,就是不知道什么意思。哪位老大给解释一下呀。
$#是参数的个数,如:

  1. set a b c d
  2. echo $#
  3. 4


9
取文件名1.txt
.前面的一个字符

 echo 1.txt|sed 's/^.*\([A-Za-z0-9]\.\).*/\1/;s/\.//'




10
替换第四行
第一列 字符为特定字符
 awk -v str=fuck 'NR==4{$1=str}{print}' 1.txt




11
引用的必要性
" "                 双引号
' '                单引号
` `                反引号
\                反斜线

双引号可以引用除字符$ ` \外的任意字符或字符串。

a="Hello Linux"
echo $a
Hello Linux

如果要查询包含空格的字符串,经常会用于双引号。
grep "aaa bbb" /etc/passwd

a="linux"
echo "Hello $a "
Hello linux
echo "Hello "$a" "
Hello linux

单引号
单引号与双引号类似,不同的是shell会忽略任何引用值。换句话说,如果屏蔽了其特殊含义,会将引号里的所有字符,包括引号都作为一个字符串。

a='linux'
echo "Hello $a"
Hello linux
echo "Hello '$a'"
Hello 'linux'

反引号用于设置系统命令的输出到变量。shell将反引号中的内容作为一个系统命令,并执行其内容。使用这种方法可以替换输出为一个变量。反引号可以与引号结合使用。

echo `date`
日 5月 29 23:21:52 CST 2005

echo "There are `who|wc -l` users"
There are       6 users

expr 12 \* 12
144





12

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

阅读(460) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~