我的日志文件名为:log.txt
我的目标是仅在文件 log.txt 中的最后一个字符串:“Number”之后添加参数: $PARAM
例子:
PARAM=34.43435454
Run Code Online (Sandbox Code Playgroud)
尾部-10 log.txt
date 12.3.2010 Number 2.34
date 12.3.2010 Number 2.14
date 12.3.2010 Number 34.43435454
Run Code Online (Sandbox Code Playgroud)
有人知道如何用 sed 做到这一点吗?
我有这个 sed & find 命令
find /home/www/ -name footer.php -exec sed -i 's/<\/body>/testmoe\n<\/body>/'
Run Code Online (Sandbox Code Playgroud)
我需要用 file.txt 中的数据替换 testmoe 所以它会是,
find /home/www/ -name footer.php -exec sed -i 's/<\/body>/file.txt\n<\/body>/'
Run Code Online (Sandbox Code Playgroud)
任何纠正我的命令的建议
我有一个 PHP 应用程序,它在日志文件中生成大量警告和通知。
我正在一次修复这些。
我希望能够首先修复最常发生的问题,以便最大限度地提高我的更改对日志文件大小的影响。
如何使用 grep/sed/regex 等找出最频繁出现的通知?
我无法比较整行,因为时间戳在开头,但也许是“在线…… ”的列表/分组/排序?
我很擅长使用 bash 脚本编写,而且我正在学习正则表达式和一些 sed 用法。学习 awk 是否仍然值得,因为那里有所有替代方案。意见?
我有一个在 FreeBSD 机器上运行的简单脚本,代码如下:
#!/bin/sh
`sed -i .bak '\:#start 172.0.0.3:,\:#end 172.0.0.3:d' /usr/local/etc/racoon/racoon.conf`
echo $?
Run Code Online (Sandbox Code Playgroud)
它应该删除两个模式之间的文本块。
问题是,如果我直接从 shell 运行 sed 命令,它会起作用,如果我运行脚本,则返回码为 0。
为什么?
我尝试从以下字符串(使用创建who am i)中提取主机名:
username pts/0 2010-10-05 17:30 (www.example.com)
Run Code Online (Sandbox Code Playgroud)
我需要一个解决方案,如果 (www.example.com) 不存在(当我在本地登录时就是这种情况),它也可以工作。此外,该解决方案还必须在who am i返回以下字符串的 Mac 上运行:
username ttys006 Oct 5 16:47 (www.example.com)
Run Code Online (Sandbox Code Playgroud)
问题是 mac 在日期中放置了空格,这使得它难以使用cut。我认为,必须有一个sed用于提取子字符串的解决方案,但是我在弄清楚如何正确使用时遇到了问题sed。
更新:疯狂的方法
这种方法只有在实际存在括号时才有效。如果不是,则会发生以下情况:
$ who am i | cut -f2 -d '(' | tr -d ')'
username ttys006 Oct 5 16:47
Run Code Online (Sandbox Code Playgroud) 我想获取 tok98 和 5678 之间的文本并将其转储到文件中。
如果 tok98 和 5678 在同一条线上,我可以使用它
sed -n 's/.*\(tok98\)\(.*\)\(5678\).*/\2/p' testfile.txt > text.dmp
Run Code Online (Sandbox Code Playgroud)
但是当标记垂直间隔时它不起作用,我如何重写这个 sed 以在这里工作
$ cat testfile.txt
do with > 9
tok98
fdf df s df sd f sd v
dvsdv dvf sd vs vs dv sdfsd
2323 2323 232 {}
sfdf sd f s df s df sf
5678
no way = true + 50
$
Run Code Online (Sandbox Code Playgroud) 我有一个文件,其中一行包含很多!字符。我想删除所有!字符。
我试过这个:
sed s/!// myfile
Run Code Online (Sandbox Code Playgroud)
和这个:
sed 's/!//' myfile
Run Code Online (Sandbox Code Playgroud)
和这个:
sed 's/"\!*"//' myfile
Run Code Online (Sandbox Code Playgroud)
但它们都只是打印出所有的“!”。
我一定遗漏了一些明显的东西。有任何想法吗?
我有一个脚本,它在文件中找到一个字符串并将其替换为一个新字符串。
$ sed -i 's/$old_string'/'$new_string'/g' $FILENAME
Run Code Online (Sandbox Code Playgroud)
现在我需要条件是一个正则表达式,它还检查旧字符串后面是否有除数字以外的任何内容。
我试过这个,但没有用:
$ sed -i -r 's/$old_string(^[0-9])+/$new_string/g' $FILENAME
Run Code Online (Sandbox Code Playgroud)
任何的想法?
需要帮助 - 如果最后一个字符是 - ":" 和 sed ,如何从文件中删除该行,在 Solaris 机器上
例如 sed 将删除以下行(包括黑线)
/etc/val/config/globals.xml:/globals/CLUSTERNODES/node:
Run Code Online (Sandbox Code Playgroud)
例如不需要删除的内容
/etc/val/config/globals.xml:/globals/CLUSTERNODES/node:node1a
Run Code Online (Sandbox Code Playgroud)