如何使用sed删除“]”后一行中的所有字符?
我正在尝试使用 cat、awk 来 grep 一些文件。现在我的 oneliner 返回给我类似的东西
121.122.121.111] other characters in logs from sendmail.... :)
现在我想删除“]”字符之后的所有内容(带有“]”)。我只想121.122.121.111在我的输出中。
我在谷歌上搜索 sed 的特定示例,但在这些示例中没有找到任何帮助。
我的 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"
Run Code Online (Sandbox Code Playgroud)
该脚本用于读取特定文件(例如:myfile.txt)中的一系列行。然后它将文件的内容放入某个变量(var1,var2)中。之后,该变量将被调用到 curl 函数中。
当文件的内容在每个新行中都有间距时,问题就开始了。这使得 curl 无法正常工作,因为它不接受空格字符。我设法将间距替换为加号符号。但是每当有新行时,它将有间距而不是加号。
部分输出如下:
hi+there.hopefully+you+can+get+this+email+which+are being+send+as+sms.
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我吗?谢谢。
我有一个 bash 脚本,可以在其中获取磁盘使用情况,例如60%. 如何删除%符号?使用 grep 还是 awk?
例如,我有一个包含此条目的日志文件:
[2012 年 8 月 8 日星期三 11:39:41] [错误] [客户端 155.94.70.224] ModSecurity:[文件“/etc/httpd/modsecurity.d/rules/base_rules/modsecurity_crs_20_protocol_violations.conf”] [行“271”] [ id "960020"] [rev "2.2.5"] [msg "Pragma Header 需要 Cache-Control Header for HTTP/1.1 请求。"] [severity "NOTICE"] [tag "RULE_MATURITY/5"] [tag "RULE_ACCURACY/ 7"] [标签 " https://www.owasp.org/index.php/ModSecurity_CRS_RuleID-960020 "] [标签 "PROTOCOL_VIOLATION/INVALID_HREQ"] [标签 " http://www.bad-behavior.ioerror.us/文档/它是如何工作的/ “] 警告。REQUEST_PROTOCOL 处的字符串匹配“HTTP/1.1”。[主机名“webmail.white-art.co.uk”] [uri“/horde/themes/graphics/tree/plusonly.
我想提取所有以字符开头[并以]. 我可以使用 cut 或 awk 使用单个分隔符进行提取,但我需要在开始[和结束之间提取字符串]。如何实现呢?
例如,我需要提取:
“[标签“RULE_ACCURACY/7”]”
和
“[严重性“注意”]”
从日志中。
我找到了一个解决方案,首先我必须通过在每个之后添加新行]然后使用 grep 搜索所需的字符串来分解日志。有没有更好的方法来做到这一点?
我有一个文件中的文件列表,cache_temp.
在文件中cache_temp:
/home/maildir/mydomain.com/een/new/1491397868.M395935P76076.nm1.mydomain.com,S=1740,W=1777
/home/maildir/mydomain.com/een/new/1485873821.M199286P14170.nm1.mydomain.com,S=440734,W=446889
/home/maildir/mydomain.com/td.pr/cur/1491397869.M704928P76257.nm1.mydomain.com,S=1742,W=1779:2,Sb
/home/maildir/mydomain.com/td.pr/cur/1501571359.M552218P73116.nm1.mydomain.com,S=1687,W=1719:2,Sa
/home/maildir/mydomain.com/td.pr/cur/1498562257.M153946P22434.nm1.mydomain.com,S=1684,W=1717:2,Sb
Run Code Online (Sandbox Code Playgroud)
我有一个简单的脚本,用于从以下位置获取文件大小cache_temp:
#!/bin/bash
for i in `grep -v ^# ~/cache_temp | grep -v "dovecot.index.cache"`; do
if [ -f "$i" ]; then
size=$(du -sh "$i" | awk '{print $1}')
echo $size
fi
done
Run Code Online (Sandbox Code Playgroud)
我有一个文件大小列表:
4,0K
4,0K
4,0K
432K
4,0K
Run Code Online (Sandbox Code Playgroud)
我怎样才能计算它们的总和?
我正在尝试使用 awk 解析文件以更改其名称。一切都很顺利,直到我开始对文件名中有空格的文件执行此操作。文件名类似于11237_712312955_2012-01-04 18_31_03.wav我想从文件名中替换 wav 。这是我的代码示例:
ls | awk -F\. '{print $1}'
在控制台中运行此命令后,一切正常,并且我得到了没有扩展名的文件名。
示例:文件 11237_712312955_2012-01-04 18_31_03.wav
后
ls | awk -F\. '{print $1}'控制台我在歌厅:
11237_712312955_2012-01-04 18_31_03
这是正确的。
但是当我把它放在我的脚本中时:
#!/bin/bash
for i in $(ls);
do
FILENAME=echo $i | awk -F\. '{print $1}'; #problematic line
echo $FILENAME
done
Run Code Online (Sandbox Code Playgroud)
脚本在出现空间的地方将文件分成两部分。
脚本的输出是:
11237_712312955_2012-01-04
18_31_03
Run Code Online (Sandbox Code Playgroud)
如何让我的脚本正常工作?
我已经在 SUSE 10 服务器、内核 2.6.16.60、ext3 文件系统上尝试过这个 shell 脚本
脚本有这样的问题:
cat file | awk '{print $1" "$2" "$3}' | sort -n > result
Run Code Online (Sandbox Code Playgroud)
该文件的大小约为 3.2G,我收到这样的错误消息:超出文件大小限制
在这个 shell 中, ulimit -f 是无限的
在我把脚本改成这个之后
cat file | awk '{print $1" "$2" "$3}' >tmp
sort -n tmp > result
Run Code Online (Sandbox Code Playgroud)
问题消失了。
不知道为什么,谁能帮我解释一下?
当我在 awk 中处理日志文件时,是否可以在命令行上对输出进行着色?
您将如何使用 factor 和 puppet 来确定操作系统是运行 Cent 6.x 还是 Cent 5.x ?
facter operatingsystemrelease
6.4
Run Code Online (Sandbox Code Playgroud)
我只关心主要版本(6)
我已经考虑过使用 awk,但必须有更好的方法对“傀儡清单”更友好。
#This works, but is ugly trying to use this in a puppet manifest
facter operatingsystemrelease |awk -F. '{print $1}'
6
Run Code Online (Sandbox Code Playgroud)
更新:
看起来新版本的 facter 有一些关于主要版本的附加信息,这些信息不在我的版本中。我的初始配置需要假设因子已过时。
facter --version
1.6.4
puppet --version
2.7.20
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下命令搜索可能显示主要版本的任何其他事实
facter |grep 6
Run Code Online (Sandbox Code Playgroud) 我有一个 226GB 的日志文件,我想把split它分成几块以便于xz阅读。问题是我的可用空间只剩下 177GB 的空间。
有没有办法split在不保留原始文件的额外副本的情况下将文件分成一半或分成N个块?
$ split myFile.txt
$ ls -halF
-rw-r--r-- 1 user group 35 Dec 29 13:17 myFile.txt
-rw-r--r-- 1 user group 8 Dec 29 13:18 xaa
-rw-r--r-- 1 user group 3 Dec 29 13:18 xab
-rw-r--r-- 1 user group 5 Dec 29 13:18 xac
-rw-r--r-- 1 user group 10 Dec 29 13:18 xad
-rw-r--r-- 1 user group 8 Dec 29 13:18 xae
-rw-r--r-- 1 user group 1 Dec …Run Code Online (Sandbox Code Playgroud)