如何使用命令行在 Unix/Linux 中的文件中删除空/空白(仅包括空格)行?
file.txt 的内容
Line:Text
1:<blank>
2:AAA
3:<blank>
4:BBB
5:<blank>
6:<space><space><space>CCC
7:<space><space>
8:DDD
Run Code Online (Sandbox Code Playgroud)
期望输出
1:AAA
2:BBB
3:<space><space><space>CCC
4:DDD
Run Code Online (Sandbox Code Playgroud) 我有应该是文本的二进制文件(它们是导出的日志),但我无法用 less 打开它(它看起来很丑 - 它看起来像一个二进制文件)。我发现我可以用 vi 打开它,我可以 cat 它(你会看到实际的日志),但我真正想做的是通过它们 grep(不必用 vi 打开每一个然后执行搜索)。有没有办法让我做到这一点?
我需要转储 Active Directory 中的所有组策略,以便日后离线查看。有没有办法可以轻松地将所有组策略导出为文本或其他易于解析的格式?
编辑:这些工具是否可以在不属于域的计算机上运行?我有域凭据,但我的工作笔记本电脑不一定是我需要查看的域的一部分。
如果我有一个日志文件并且只想将 1234 和 9876 之间的文本转储到另一个文件中,我该如何轻松地做到这一点?
如果我有这样的文本文件:
idsfsvcvs sdf sdf e e sd vs d s g sg s vc d
slkdfnls 1234 keep me text 9876 das a g w eg dsf sd fsdf
sdfs fs dfsdf
sdfsdf sdf
sdf s fs
dfsf ds
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情
$ getinfo "1234" "9876" 日志
$猫日志
让我保持文本
有没有办法像通过 SSH 远程控制其他 Linux 电脑一样轻松地远程控制 Windows 机器?
我目前正在使用 FTP 服务器存储文件,但我更喜欢管理其他 linux 机器的方式。我希望它像 ssh 一样是文本的,有这样的吗?我的意思是运行程序,重新启动/关闭,复制/编辑文件等...
我读到了 Cygwin,它能满足我的需求吗?
编辑:
我之前没有指定它,它应该是免费的
我有一个由 3rd 方软件生成的文本文件,作为构建过程的一部分。我想替换一个特定的行 - 在我的例子中是第 6 行。我怎样才能在我的 bash 脚本中做到这一点?
我怀疑 sed 是我的朋友,但我现在很困惑。
如果这很重要,我正在使用 Mac OS X 10.6。
我有一个巨大的文本文件,其中包含 IP 地址:
123.33.22.33
221.23.128.2
123.33.22.33
92.222.192.12
92.222.192.12
123.33.22.33
Run Code Online (Sandbox Code Playgroud)
我可以将其排序为:
123.33.22.33
123.33.22.33
123.33.22.33
221.23.128.2
92.222.192.12
92.222.192.12
Run Code Online (Sandbox Code Playgroud)
并看到(用肉眼)第一个 IP 出现 3 次,第二次出现一次,最后一次出现两次。
我希望能够在巨大的日志文件中做到这一点,显然是以自动化的方式。是否可以?
谢谢
我有一个巨大的 MySQL 备份文件(来自 mysqldump),其中的表按字母顺序排列。我的恢复失败,我想从备份文件中的下一个表开始。(我已经纠正了这个问题,这实际上并不是一个关于 MySQL 恢复等的问题。)
我想做的是获取我的备份文件,例如backup.sql
并修剪文件的开头,直到看到这一行:
-- Table structure for `mytable`
Run Code Online (Sandbox Code Playgroud)
然后之后的所有内容都将最终出现在我的结果文件中,例如backup-secondhalf.sql
. 由于文件是 bzip2 压缩的,这有点复杂,但这应该不是什么大问题。
我想我可以这样做:
$ bunzip2 -c backup.sql.bz2 | grep --text --byte-offset --only-matching -e '--Table structure for table `mytable`' -m 1
Run Code Online (Sandbox Code Playgroud)
这将为我提供文件中我想要修剪的字节偏移量。然后:
$ bunzip2 -c backup.sql.bz2 | dd skip=[number from above] | bzip2 -c > backup-secondhalf.sql.bz2
Run Code Online (Sandbox Code Playgroud)
不幸的是,这需要我在文件上运行 Bunzip2 两次并读取所有这些字节两次。
有没有办法一次性完成这一切?
我不确定我的 sed-fu 是否足够强大来执行“删除正则表达式之前的所有行,然后让文件的其余部分通过”表达式。
这是在 Debian Linux 上,所以我有可用的 GNU 工具。
我找到了一个我认为可以适应我的目的的 PowerShell 脚本。
它包含格式化输出的这一行:
$largeSizefiles = get-ChildItem -path $filesLocation -include $Extension -recurse -ErrorAction "SilentlyContinue" | ? { $_.GetType().Name -eq "FileInfo" } | where-Object {$_.Length -gt $fileSize} | sort-Object -property length | Select-Object Name, @{Name="Size In KB";Expression={ "{0:N0}" -f ($_.Length / 1KB)}},@{Name="LastWriteTime";Expression={$_.LastWriteTime}},@{Name="Path";Expression={$_.directory}} -first $filesLimit
Run Code Online (Sandbox Code Playgroud)
关键部分似乎是这样的:
Select-Object Name, @{Name="Size In KB";Expression={ "{0:N0}" -f ($_.Length / 1KB)}},@{Name="LastWriteTime";Expression={$_.LastWriteTime}},@{Name="Path";Expression={$_.directory}} -first $filesLimit
Run Code Online (Sandbox Code Playgroud)
我已经阅读了关于 Select-Object 的 ss64.com 教程,但我没有找到任何内容来解释 @{.....} 表单的表达式如何格式化文本。
该ss64.com上@操作显示它的格式页@(...),有括号,括号没有。
上面的代码导致以下输出:
Name : RPI-Image-1-Copy.img
Size In MB : 29,477
Path …
Run Code Online (Sandbox Code Playgroud) 我有一个文件 a.txt。我想用该文件中的“1.5”替换“1.6”的所有实例,覆盖原始文件。