linux - 输出到文件时得到额外的行?

标签 linux bash sed grep diff

我正在使用 diff 命令并将其打印到文件中。该文件最后不断出现我不需要出现的额外行。我怎样才能阻止它出现?

命令如下:

diff -b <(grep -B 2 -A 1 'bedrock.local' /Applications/MAMP/conf/apache/httpd.conf) /Applications/MAMP/conf/apache/httpd.conf > test.txt

正在使用的文件在这里(我认为这不重要):http://yaharga.com/httpd.txt

也许至少我想知道如何检查文件的最后一行并仅在它为空时将其删除。

最佳答案

要删除空的最后一行,您可以使用 sed,它只会在它为空时删除它:

sed '${/^\s*$/d;}' file

好的,我在我的 MacOS 上研究了你的文件。 我通过 touch new.conf 创建了文件 new.conf,然后将数据从你的文件复制到它。 顺便说一句,我检查了文件,并没有在它的底部有额外的空行。 我用以下内容编写了脚本 script.sh:

diff -b <(grep -B 2 -A 1 'bedrock.local' new.conf) new.conf > test.txt
sed -i.bak '1d;s/^>//' test.txt

它区分了需要的内容并删除了第一个无用的行和所有 > 将其保存到一个新文件 test.txt

我又检查了一遍,并没有出现多余的空行。

此外,我建议您尝试删除多余的行,如下所示:sed -i.bak '$d' test.txt 并检查sed = test.txt

前后的几行

可能是您的文本编辑器以某种方式将这一行添加到您的文件中。尝试其他东西 - 例如 nanovi

关于linux - 输出到文件时得到额外的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27434827/

相关文章:

bash - 从html中提取某些扩展链接

shell - Unix : saving a sed command in a variable, 回显它,然后执行它

php - 如何使用 PHP 判断文件是否为文本?

linux - Linux 中的精确 grep -f 命令

bash - 在 Unix 中为文件名添加前缀

linux - 有一个更好的方法吗?巴什

sed - 从一行中提取特定单词

regex - SunOS - (Bash) Grep 命令从不包含模式的匹配中获取行

linux - 如何从 grep 的输出中选择?

bash 通过添加数字批量重命名文件