相关疑难解决方法(0)

shell 的控制和重定向操作符是什么?

我经常在网上看到用不同符号连接各种命令的教程。例如:

command1 |  command2
command1 &  command2
command1 || command2    
command1 && command2
Run Code Online (Sandbox Code Playgroud)

其他人似乎将命令连接到文件:

command1  > file1
command1  >> file1
Run Code Online (Sandbox Code Playgroud)

这些是什么?他们叫什么?他们在做什么?还有更多吗?


关于这个问题的元线程。.

shell io-redirection control-flow

353
推荐指数
3
解决办法
17万
查看次数

dd 与 cat - 这些天 dd 仍然相关吗?

我最近意识到我们可以使用cat尽可能多的dd,而且它实际上比dd

我知道这dd在处理块大小实际上影响正确性而不仅仅是性能的磁带时很有用。然而,在这些日子里,是否存在dd可以做一些cat不能做的事情?(在这里,我认为不到 20% 的性能差异无关紧要。)

具体的例子会很好!

dd cloning cat

147
推荐指数
8
解决办法
4万
查看次数

如何让 iconv 用转换后的输出替换输入文件?

我有一个 bash 脚本,它枚举目录中的每个 *.php 文件并应用于iconv它。这将在 STDOUT 中获得输出。

由于添加-o参数(根据我的经验)实际上可能在转换发生之前写入一个空白文件,我如何调整我的脚本以进行转换,然后覆盖输入文件?

for file in *.php
do
    iconv -f cp1251 -t utf8 "$file"
done
Run Code Online (Sandbox Code Playgroud)

shell io-redirection text-processing

79
推荐指数
2
解决办法
6万
查看次数

如何获得“tail”和“head”的反向行为?

有没有办法head/tail一个文件并获得反向输出;因为您不知道文档中有多少行?

即我只想获取除前两行之外的所有内容foo.txt以附加到另一个文档。

tail text-processing head

62
推荐指数
2
解决办法
5万
查看次数

删除文件的前 n 个字节

我有一个极端的问题,我能想到的所有解决方案都很复杂。根据我的 UNIX/Linux 经验,一定有一个简单的方法。

我想删除/foo/. 每个文件都足够长。好吧,我相信有人会为我提供一个我无法想象的非常简单的解决方案。也许awk?

sed awk text-processing files

34
推荐指数
3
解决办法
4万
查看次数

如何删除文件中的某些行(使用行号)?

我想从文件中删除一些特定的行。假设它是第 20-37 行,然后是第 45 行。如果不指定这些行的内容,我该怎么做?

text-processing

27
推荐指数
2
解决办法
3万
查看次数

我可以让 `cut` 就地更改文件吗?

man页面并没有给我太大希望,但我希望它是一个未记录的(和/或特定于 GNU 的)功能。

shell io-redirection cut files

20
推荐指数
3
解决办法
2万
查看次数

sed 在完整文件系统上就地行删除?

由于尚未诊断的应用程序错误,我有数百个磁盘已满的服务器。有一个文件被重复的行填满——不是日志文件,而是一个带有变量定义的用户环境文件(所以我不能直接删除该文件)。

我编写了一个简单的sed命令来检查错误添加的行并删除它们,并在文件的本地副本上对其进行了测试。它按预期工作。

但是,当我在带有完整磁盘的服务器上尝试它时,我得到了大约以下错误(它来自内存,而不是复制和粘贴):

sed: couldn't flush /path/to/file/sed8923ABC: No space left on deviceServerHostname
Run Code Online (Sandbox Code Playgroud)

当然,我知道没有剩余空间了。这就是为什么我试图删除东西!(sed我使用的命令会将 4000 多行的文件减少到大约 90 行。)

我的sed命令只是sed -i '/myregex/d' /path/to/file/filename

尽管磁盘已满,有没有办法可以应用此命令?

(它必须是自动化的,因为我需要将它应用到数百台服务器上作为快速修复。)

(显然需要诊断应用程序错误,但同时服务器无法正常工作......)


更新:通过删除我发现可以删除的其他内容来解决我面临的情况,但我仍然希望得到这个问题的答案,对未来和其他人都有帮助。

/tmp是不行的;它在同一个文件系统上。

在释放磁盘空间之前,我进行了测试,发现可以vi通过打开文件并运行来删除其中的行:g/myregex/d,然后使用:wq. 似乎应该可以自动执行此操作,而无需求助于单独的文件系统来保存临时文件......(?)

sed text-processing files ed

12
推荐指数
2
解决办法
9604
查看次数

bash:在只读根分区上使用 read <<<"$VARIABLE" 时出现一些问题。任何已知的解决方法?

巧合的是,我不得不使用我的 ATA-ID-to-device-name 脚本(在这里找到:https : //serverfault.com/questions/244944/linux-ata-errors-translating-to-a-device-name/ 426561#426561 ) 在只读 /分区上。如果你好奇,它是一个 Ubuntu 恢复控制台,它可以让你访问你的/分区,但默认情况下它会以只读方式挂载。我对此很高兴,因为否则我可能永远不会发现我的脚本由于特定行而在 R/O 系统上表现得很奇怪,这个:

IFS=: read HostMain HostMid HostSub <<< "$HostFull"
Run Code Online (Sandbox Code Playgroud)

这并不会在没有写权限的工作。不过,我不会认为它会失败。但显然<<<操作员确实需要将一些临时文件写入某个地方。

但是有没有办法绕过临时文件的创建,或者,有没有办法指定文件的写入位置?在 Ubuntu 恢复控制台中,有——奇怪的是——对/run目录的写权限,如果我能以某种方式“告诉”read将临时文件写入其他地方而不是平常,那就可以了。

bash tmp readonly here-document read

11
推荐指数
1
解决办法
829
查看次数

有没有更快的方法从文件中删除一行(给定行号)?

一个相关的问题是here

我经常需要通过从中间删除几行来编辑大文件。我知道我想删除哪些行,我通常会执行以下操作:

sed "linenum1,linenum2 d" input.txt > input.temp
Run Code Online (Sandbox Code Playgroud)

或通过添加 -i 选项内联。由于我知道行号,是否有避免流编辑并删除特定行的命令?input.txt 可以大到 50 GB。

sed text-processing

7
推荐指数
2
解决办法
9819
查看次数

是否可以修改只读目录中的文件?

我已经读过:有没有办法就地修改文件? 我很好奇是否有办法使用不会创建临时文件的命令来修改文件。假设我创建了一个目录 mkdir read_only ,然后在 read_only 中创建了一些文件。当我愉快地完成创建文件时,我运行chmod 555 read_only. 现在是否可以在不使用临时文件的情况下修改任何文件?具体来说,我想要一个可以从 bash 脚本完成的解决方案。我不想知道是否有可能;我也在寻求解决方案。到目前为止,我使用 bash/unix 命令管理的所有想法都会创建临时文件。

编辑:我相信我的问题不是Can a file be edit with 'write' permission on it 但不是在其父目录上的重复出于以下原因:

  • 除了问“可以”之外,我还在寻求解决方案。而他们只问“可以”。
  • 可能重复的答案并不能完全回答我的问题。我要求可以进入 bash 脚本的命令。

bash sed perl files

4
推荐指数
1
解决办法
4890
查看次数

从大型二进制文件中删除回车符

我有有许多大的二进制文件(近二进制文件!) \ r \ n 在它[被产生的窗口env和没有CONTROLE在生成的应用程序]。我想从这个大文件 [ =~ 1Gb ] 中删除\r以在另一个对\r's 大喊大叫的旧应用程序中进行进一步处理

有没有什么简单的方法可以用unix方式做到这一点?

text-processing binary files

2
推荐指数
1
解决办法
3025
查看次数

标签 统计

text-processing ×7

files ×5

sed ×4

io-redirection ×3

shell ×3

bash ×2

awk ×1

binary ×1

cat ×1

cloning ×1

control-flow ×1

cut ×1

dd ×1

ed ×1

head ×1

here-document ×1

perl ×1

read ×1

readonly ×1

tail ×1

tmp ×1