我正在面对一些关于我的bash脚本的问题。 下面是我的bash代码: #!/bin/bash cd /root/Msgs/TESTNEW/new file=myfile.txt var1=$(awk '(NR==30){print $2}' $file) var2=$(awk 'NR>=38 && NR<=39' $file) var3=${var2// /+} curl "http://<server_ip>/power_sms/send_sms.php?username=<user>&password=<pass>phoneno=$var1&text=$var3" 这个脚本的目的是读取特定文件(例如:myfile.txt)的一行内容,然后将文件的内容放入一个variables(var1,var2)中。 之后,variables将被调用到curl函数中。 当文件的内容在每行都有空格时,问题就开始了。这使得curl不能正常工作,因为它不接受空白字符。我设法把空格replace成加号。但是每当有新的行时,将有间距,而不是有加号。 一些输出如下: hi+there.hopefully+you+can+get+this+email+which+are being+send+as+sms. 有人可以帮我吗?谢谢。
我们在这里有各种各样的硬件和操作系统的机器,他们中的大多数使用代理执行的bash执行常规任务。 但是我注意到,我们拥有的一些Solaris机器没有stat util,添加它会是一个需要时间的问题(具有讽刺意味) 与此同时,我试图模仿一个macros伟的方式统计一个sisyphean任务:返回八进制文件的权限 我发现了一些在Octal-rwx中打印常规权限的旧例子,但不是用于“特殊”权限 – 粘性组,粘性用户等 我的基本方法是这样的:首先计算特殊位八进制值,然后添加常规的'rwx',但它似乎并不好 ls -lah $file | awk '{k=0;for(i=0;i<=8;i++) {if (substr($1,i+2,1)~/[s]/) k += ((substr($1,i+2,1)~/[s]/)*2^9);else k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));}if (k)printf("%0o ",k);}' ls -lah $file | awk '{k=0;for(i=0;i<=8;i++){k+=((substr($1,i+2,1)~/[rwxs]/)*2^(8-i));printf("%0o\n",k)}if(k)printf("%0o ",k);}' 任何人都可以提示我什么是一个好的解决scheme?
我正在编写一个shell脚本,以不同的时间间隔检查vmstat si等数据 vmstat 1样本输出: procs ———–memory———- —swap– —–io—- -system– —-cpu—- rb swpd free buff cache si so bi bo in cs us sy id wa 0 0 45820 899252 86700 468520 0 0 0 60 127 5821 20 7 34 0 0 0 45820 899252 86704 468504 0 0 0 32 44 104 0 0 […]
我在文件中有以下行: Linux Release…………5.4.2.0-02 12_12_2011_07:31:23 如何在使用sed或awk删除第一个数字之前删除所有字符? 我希望得到以下结果: 5.4.2.0-02 12_12_2011_07:31:23
我需要做一些更复杂的绘图和阴谋。 虽然我知道gnuplot可以完成任务,并且可以通过命令行完成,但是我还有其他更简单或更强大的工具吗? 我有点老,所以当我想到统计和制图时,我倾向于思考sed,awk,bash和gnuplot。 理想情况下,我想parsing的东西到本地的MySQL数据库,创build批处理作业,设置传入数据的警报等。实时图也将是太棒了。 Gnuplot可以做到这一切,但我不想重新发明轮子,如果我不必。 可视化工具已经取得了一些重大进展,说实话,虽然输出效果很好,但是将日志和数据parsing,分组和分类到gnuplot所能接受的forms会降低我快速组装智能查询的速度。 用gnuplot混合SQL似乎是要走的路,但是它们不能很好地连接。 这将是一个有点痛苦。 举个例子,我最近的项目将花费数月的Apache日志数据,并寻找攻击模式来构build防御性签名。 访问date/时间/地理/网站/url,有无尽的可能的东西来绘制和筛选。 按date范围分组等 后续的项目将是应用签名(统计或其他),并生成警报/响应的攻击模式。 虽然一个工具可能很好地挖掘静态日志,但它不一定会做dynamic统计。
当我在awk中处理日志文件时,是否有可能在命令行上对输出进行着色?
我偶尔需要从mysqlbackup中提取单个logging 要做到这一点,我首先从备份中提取我想要的单个表… sed -n -e '/CREATE TABLE.*usertext/,/CREATE TABLE/p' 20120930_backup.sql > table.sql 在table.sql中,使用扩展插入对logging进行批处理(每插入100条logging,然后创build一个以INSERT INTO开头的新行),所以它们看起来像… INSERT INTO usertext VALUES (1, field2 etc), (2, field2 etc), INSERT INTO usertext VALUES (101, field2 etc), (102, field2 etc), … 我试图从中提取logging239560,使用… sed -n -e '/(239560.*/,/)/p' table.sql > record.sql 也就是说,当它发现239560时开始stream式传输,当它碰到右括号时停止 但是,这不是我希望的工作,它只是导致完整的插入批输出。 请有人可以给我一些指示,哪里我出错了? 使用awk提取行段,使用sed提取文件中的行会更好吗?
我需要从lsscsi命令grep特定的lsscsi 。 例如: [root@e15l1 ~]# lsscsi 4 0 1 | awk '{print $1,$6}' | head [4:0:1:0] – [4:0:1:1] /dev/sdab [4:0:1:2] /dev/sdj [4:0:1:3] /dev/sdz [4:0:1:4] /dev/sdk [4:0:1:12] /dev/sdo [4:0:1:13] /dev/sdp [4:0:1:38] /dev/sdad 我怎么能grep只有第一,十二和十三? 我正在使用: lsscsi | awk '{ print $1,$6 }' | grep -w 4:0:1 | egrep -w '1|1[2-3]' lsscsi | awk '{ print $1,$6 }' […]
我喜欢下面的文件名 adn_DF9D_20140515_0001.log adn_DF9D_20140515_0002.log adn_DF9D_20140515_0003.log adn_DF9D_20140515_0004.log adn_DF9D_20140515_0005.log adn_DF9D_20140515_0006.log adn_DF9D_20140515_0007.log 我想从文件名和创build目录中获得年,月,日 例如: [[ ! -d "$BASE_DIR/$year/$month/$day" ]] && mkdir -p "$BASE_DIR/$year/$month/$day"; [[ ! -d "$BASE_DIR/$year/$month/$day" ]] && mkdir -p "$BASE_DIR/$year/$month/$day"; 如何实现这一点,并分享给你的想法/脚本感激
我正在学习AWK ,当我第二次使用下面的命令时,为什么数字总是一样的? 第一次运行: awk 'BEGIN{for(i=1;i<=10;i++) print int(101*rand())}' 24 29 85 15 59 19 81 17 48 15 第二次运行: awk 'BEGIN{for(i=1;i<=10;i++) print int(101*rand())}' 24 29 85 15 59 19 81 17 48 15