我不知道如何写标题。
我需要输出,例如:
[~]# cat file
user1
domain1.com
user2
domain2.com
user3
domain3.com
Run Code Online (Sandbox Code Playgroud)
并将其转换为输出,例如:
user1 domain1.com
user2 domain2.com
user3 domain3.com
Run Code Online (Sandbox Code Playgroud)
这里的任何帮助将不胜感激。
我在一个目录中有几百个文本文件,其中包含用户列表:
&usera
&userb
userc
&userd
Run Code Online (Sandbox Code Playgroud)
请注意,有些不带&. 此外,在某些文件中,最后一行不以换行符结尾。
在 shell 脚本中遍历所有这些文件并删除,例如userb确保每个现有用户保留在自己的行上的最简单方法是什么?
谢谢!
我有一个简单的脚本,它为我提供了一些文件中的值。我正在使用 sed 来获取那个值(下面给出了语法)。直到昨天,这些命令都运行良好。但是现在当我运行这些命令时我没有得到任何价值。我没有改变任何东西,所以我很惊讶这是什么原因。谁能告诉我如何调试我的问题?以下是文件文本:
May 1 11:59:31 box2 kernel: usb 1-3: new high speed USB device using ehci_hcd and address 24
May 1 11:59:31 box2 kernel: usb 1-3: New USB device found, idVendor=0411, idProduct=0105
May 1 11:59:31 box2 kernel: usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=5
May 1 11:59:31 box2 kernel: usb 1-3: Product: USB-SATA Bridge
May 1 11:59:31 box2 kernel: usb 1-3: Manufacturer: BUFFALO
May 1 11:59:31 box2 kernel: usb 1-3: SerialNumber: 00001412AA38
May 1 11:59:31 box2 kernel: …Run Code Online (Sandbox Code Playgroud) 我有大约 30,000 个 Apache 访问日志,其中一些列出了多个客户端 IP 地址。这是因为 Apache 记录了 X-Forwarded-For 标头而不是客户端的 IP 地址。这样做的原因是因为我们最近在 Web 服务器前面添加了 haproxy。
展望未来,我们将使用Apache 的rpaf仅记录 1 个 IP 地址,即到 haproxy 的传入连接的 IP 地址,因此这不会是一个持续的问题。
这让我想到了实际问题:
如何处理具有多个 IP 地址的现有日志,以仅提取我想要的日志。我假设我需要 sed 或类似的东西,但我更像是一个 Windows 人,所以不是 100% 确定。
规则是:
示例 1、1 个 IP
输入:10.1.1.1 - - [29/Jan/2010:11:00:00] ....(日志行的其余部分)
输出:10.1.1.1 - - [29/Jan/2010:11:00:00] ....(日志行的其余部分)
示例 2,2 个 IP
输入:10.1.1.1 , 10.2.2.2 - - [29/Jan/2010:11:00:00] ....(日志行的其余部分)
输出:10.1.1.1 - - [29/Jan/2010:11:00:00] ....(日志行的其余部分)
示例 3、3 个 IP …
我正在尝试开发一个脚本来自动在我的服务器上设置一个新的虚拟主机域,我在我的服务器上有一个自定义设置,它为每个域提供用户名和密码,但没有外壳访问权限。(这是使用系统用户对 vsftpd 所做的)它还在 /var/www/sites/"domainname.com" 中创建一个目录,其中包含所有默认文件。然后为虚拟主机创建了一个 /etc/apache2/sites-available/domaindname.com Apache Conf 文件。这个脚本出错了,但看起来好像完成了所有事情。不过,我希望错误消失。
#!/bin/bash
#\
args=("$@")
# Copy Site Hosting Directory
cp -a /var/www/sites/skeleton /var/www/sites/${args[0]}
# Copy Apache Config File
cp -a "/etc/apache2/sites-available/skeleton" "/etc/apache2/sites-available/$1"
# Replace 'skeleton' with '$1' in config file
sed -i "s/skeleton/$1/g" /etc/apache2/sites-available/$1
# Create User
useradd -d /var/www/sites/$1 -s /usr/sbin/nologin $1
chown -R $1:www-data /var/www/sites/$1
chmod -R 0775 /var/www/sites/$1
# Set new password for user
exec expect -f $0 ${1+"$@"}
set password [lindex $argv 1]
spawn passwd [lindex $argv 0] …Run Code Online (Sandbox Code Playgroud) 正在使用
!/bin/bash
for fl in *.txt; do
mv $fl $fl.old
sed 's/files.php?file=/file/g' $fl.old > $fl
rm -f $fl.old
done
Run Code Online (Sandbox Code Playgroud)
我需要将输出替换为 file/ 不仅是 file ,无法弄清楚
我正在使用 bash 脚本以交互方式编辑我的主机文件。我需要在我的主机文件中插入一行。该行需要插入特定注释后的第一个空行。我插入的内容在一个变量中。
这是我尝试过的(之前设置了 $NEWLINE):
sed -i '# Insert New DNS / Virtualbox/$NEWLINE/g' /etc/hosts
我没有收到错误,但没有写入该行。有什么建议吗?
我有一个 mysqldump 文件,我想在其中替换以下文本<a href="/tag/,<a href="http://www.mydomain.com/tag/但找不到正确转义所有特殊字符的方法。
我正在使用以下命令(+ 一些其他变体),
cat wordpress_posts.sql | sed 's%/<a href="\/\tag\/\/<a href="\http:/\/\www.mydomain.com/\tag/\/%g' > wordpress_posts_new.sql
但它不起作用。
有人可以帮忙吗?
更新 1:结果是 mysqldump 中的源字符串不是<a href="/tag/但<a href=\"/tag/(注意等号后面的额外反斜杠)
这是 SQL 文件的一行的 pastebin,其中包含我要替换的字符串:http://pastebin .com/8G5mcxpJ
我尝试了 sed 命令的所有 3 个建议版本,但没有一个会替换上面的字符串<a href=\"http://www.mydomain.com/tag/
(是的,我在等号后添加了反斜杠)
我在 Gnu/Linux 服务器上启动了一个应用程序myApp:
./myApp &>myApp.log &
Run Code Online (Sandbox Code Playgroud)
当然,日志文件很快就会变得巨大。
我想使用sed来减少它(我知道logrotate但我的应用程序仍然是草稿)。
但是如果我使用这样的命令
sed -i "1,200d" myApp.lo
Run Code Online (Sandbox Code Playgroud)
文件确实被截断了,但在那之后,应用程序不会再将数据写入文件。
为什么?
如何用sed删除一行中的所有字符?
我有一个像这样多行的文件:
现在我想删除前 10 个字符之后的所有字符。所以我只希望我的输出是:
我在谷歌上搜索 sed 的特定示例,但在这些示例中没有找到任何帮助。
可能重复:
我的服务器被黑了 紧急情况
您好,我的整个网站可能被 wordpress 漏洞攻击了,我急于详细解释,但请帮我一个忙,看看以下网站:
在那里它说:
现在,您必须输入以下内容才能进入您的 html/php 文件和所有安装的文件夹(不要忘记按回车键):
cd html
你几乎清理了你的网站。必须将以下代码复制粘贴到 PUTTY 窗口中:
找 。-type f -name "*.php" -exec sed -i '/base64_decode/d' {} \;
要粘贴到 PUTTY 窗口中,只需在应插入代码的位置单击鼠标右键。(这里的代码是在所有的 php 文件中搜索 base64_decode 标签,如果找到,则将其与整个恶意软件代码一起删除。这将检查您之前访问过的文件和文件夹下的所有文件和文件夹,在这种情况下“html”文件夹,这是文件的根目录)
谁能告诉我这个人的解释是否属实?
find . -type f -name "*.php" -exec sed -i '/base64_decode/d' {} \;
Run Code Online (Sandbox Code Playgroud)
上面的命令安全吗?它会编辑受感染的文件还是将它们全部删除?
感谢您的回复。
更新:不幸的是,该命令删除了 base64_encode 行所在的整行。问题是这一行还包含<?php文件的开始标记!所以现在,我所有的 index.php 页面(只有 index.php 被感染)显示所有代码而不是执行它:( 是否可以运行另一个命令,<?php在每个不以“开头的 index.php 中添加标签”任意数量的空格<?php“?
更新 2:感谢任何回答的人。也祝贺所有因为在恐慌模式下没有采取正确行动而对某人投反对票的人。如果它发生在您的网站上,祝您好运...