标签: awk

如何使用sed删除“]”后一行中的所有字符?

如何使用sed删除“]”后一行中的所有字符?

我正在尝试使用 cat、awk 来 grep 一些文件。现在我的 oneliner 返回给我类似的东西

121.122.121.111] other characters in logs from sendmail.... :)

现在我想删除“]”字符之后的所有内容(带有“]”)。我只想121.122.121.111在我的输出中。

我在谷歌上搜索 sed 的特定示例,但在这些示例中没有找到任何帮助。

linux awk sed

14
推荐指数
2
解决办法
11万
查看次数

使用 AWK 删除换行符

我的 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)

有人可以帮助我吗?谢谢。

linux bash awk

13
推荐指数
3
解决办法
10万
查看次数

如何删除 bash 脚本的某个符号

我有一个 bash 脚本,可以在其中获取磁盘使用情况,例如60%. 如何删除%符号?使用 grep 还是 awk?

scripting linux bash grep awk

8
推荐指数
3
解决办法
2万
查看次数

bash 为指定的开始和结束字符提取子字符串

例如,我有一个包含此条目的日志文件:

[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 搜索所需的字符串来分解日志。有没有更好的方法来做到这一点?

bash awk sed

7
推荐指数
2
解决办法
2700
查看次数

在 Bash 中计算几种文件大小的总和

我有一个文件中的文件列表,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)

我怎样才能计算它们的总和?

shell bash grep awk

7
推荐指数
3
解决办法
6097
查看次数

AWK 和其中包含空格的文件名。

我正在尝试使用 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)

如何让我的脚本正常工作?

linux bash awk

6
推荐指数
2
解决办法
8663
查看次数

bash 中超出文件大小限制

我已经在 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)

问题消失了。

不知道为什么,谁能帮我解释一下?

shell awk sort cat

6
推荐指数
1
解决办法
871
查看次数

命令行上的 awk 输出颜色?

当我在 awk 中处理日志文件时,是否可以在命令行上对输出进行着色?

command-line-interface awk color

5
推荐指数
1
解决办法
7981
查看次数

Puppet &amp; Facter - 如何确定是运行 Cent 6 还是 Cent 5

您将如何使用 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)

awk puppet facter

5
推荐指数
2
解决办法
2万
查看次数

拆分大日志文件而不保留原始文件(就地拆分)

我有一个 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)

linux awk sed

5
推荐指数
1
解决办法
5618
查看次数

标签 统计

awk ×10

bash ×5

linux ×5

sed ×3

grep ×2

shell ×2

cat ×1

color ×1

command-line-interface ×1

facter ×1

puppet ×1

scripting ×1

sort ×1