相关疑难解决方法(0)

打印一个文件,跳过Bash中的第一行X行

我有一个很长的文件,我想打印但跳过第一个1e6行例如.我查看了猫手册页,但我没有看到任何选项.我正在寻找一个命令来做这个或一个简单的bash程序.

linux printing bash skip

498
推荐指数
12
解决办法
36万
查看次数

在文件中查找重复的行并计算每行复制的时间长度?

假设我有一个类似于以下的文件:

123 
123 
234 
234 
123 
345
Run Code Online (Sandbox Code Playgroud)

我想找出'123'重复多少次,重复'234'多少次等等.理想情况下,输出结果如下:

123  3 
234  2 
345  1
Run Code Online (Sandbox Code Playgroud)

file lines count find duplicates

491
推荐指数
7
解决办法
49万
查看次数

sed编辑文件到位

我试图找出是否可以在单个sed命令中编辑文件,而无需手动将已编辑的内容流式传输到新文件中,然后将新文件重命名为原始文件名.我尝试了这个-i选项,但我的Solaris系统说这-i是一个非法的选择.有不同的方式吗?

unix solaris sed

264
推荐指数
9
解决办法
24万
查看次数

头部的反面是什么?我想要除文件的前N行以外的所有行

由于未知长度的文本文件,我怎么能读,例如所有,但第2行的文件?我知道tail会给我最后N行,但我不知道N是提前的.

所以对于一个文件

AAAA
BBBB
CCCC
DDDD
EEEE
Run Code Online (Sandbox Code Playgroud)

我想要

CCCC
DDDD
EEEE
Run Code Online (Sandbox Code Playgroud)

并为一个文件

AAAA
BBBB
CCCC
Run Code Online (Sandbox Code Playgroud)

我会得到的

CCCC
Run Code Online (Sandbox Code Playgroud)

scripting command-line tail unix-head

130
推荐指数
5
解决办法
7万
查看次数

使用-i选项(就地编辑)的sed命令在Ubuntu上工作正常,但在Mac上工作正常

我对Sed一无所知但是需要这个命令(在Ubuntu上运行正常)才能在Mac OSX上运行:

sed -i "/ $domain .*#drupalpro/d" /etc/hosts
Run Code Online (Sandbox Code Playgroud)

我越来越:

sed: 1: "/etc/hosts": extra characters at the end of h command
Run Code Online (Sandbox Code Playgroud)

linux macos bsd sed inplace-editing

95
推荐指数
4
解决办法
6万
查看次数

Unix脚本删除CSV文件的第一行

我之前已经说过我不擅长编写脚本,所以我在下面将文件从共享目录复制到我的更改权限的地方.但后来我想删除每个CSV文件中的第一行 - 标题 - 然后我想让它每小时运行一次.

cd /users
scp dehpc14_Disk_Quota_Report.csv /h/u544835
scp dehpc14_User_Disk_Usage.csv /h/u544835
cd /h/u544835
chmod 755 dehpc14_Disk_Quota_Report.csv
chmod 755 dehpc14_User_Disk_Usage.csv
Run Code Online (Sandbox Code Playgroud)

*在这里插入删除csv第一行*

任何人都可以帮我删除CSV文件的第一行并让它每小时自动运行一次,或者指导我做一些我可能理解的事情来解决它?

unix csv vi

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

在前面截断文件

我最近工作的一个问题让我希望我可以丢掉文件的正面.如果你愿意,有点像"前面的截断".在后端截断文件是一种常见的操作 - 我们做的事情甚至没有考虑太多.但是砍掉文件的正面?起初听起来很荒谬,但这只是因为我们受过训练才认为这是不可能的.但是在某些情况下,垂直操作可能很有用.

一个简单的例子(当然不是唯一或必然是最好的例子)是FIFO队列.您正在将新项目添加到文件末尾,并从前面将项目从文件中提取出来.文件随着时间的推移而增长,前面有一个巨大的空白空间.对于当前的文件系统,有几种解决此问题的方法:

  • 删除每个项目后,将其余项目复制以替换它,并截断该文件.虽然它有效,但这种解决方案在时间上非常昂贵.
  • 监视前面空白区域的大小,当它达到整个文件大小的特定大小或百分比时,向上移动所有内容并截断文件.这比以前的解决方案更有效,但仍然需要花费时间在文件中移动项目.
  • 在文件中实现循环队列,在删除项目时将新项添加到文件前面的孔中.这可能非常有效,特别是如果您不介意队列中出现故障的可能性.如果你关心订单,就有可能不得不移动物品.但一般来说,循环队列很容易实现并很好地管理磁盘空间.

但是如果有一个lop操作,从队列中删除一个项目就像更新文件开头标记一样简单.事实上,就像截断文件一样简单.那么,为什么没有这样的操作呢?

我对文件系统实现有一点了解,并且没有看到任何特殊原因这很难.它看起来像所有它需要的是另一个单词(dword,也许?)每个分配条目,以说明文件在块中的开始位置.对于1美元以下100美元以下的驱动器,这样的功能似乎是一个相当小的代价.

如果您可以像在最后截断那样有效地删除文件的前面,那么还可以使其他任务变得更容易?

你能想到这个功能无法添加到现代文件系统的任何技术原因吗?其他非技术原因?

filesystems

18
推荐指数
2
解决办法
7049
查看次数

在 unix shell 中删除一个非常大的文件的前 n 个字符

我有一个大文本文件(~3GB)。在创建它时,我犯了一个错误,只有第一行前几个(不是全部)字符是错误的。第一行中的其余字符是正确的。所有其他行也是正确的。我的,很简单,问题是:

如何删除这么大文件的前 n 个字符?我不想删除整个第一行,删除前 n 个字符。我的要求是:

  1. 不替换所有剩余的行。
  2. 无需阅读整个文件。
  3. 理想情况下,使用 unix shell 命令。

我试过 sed,但它替换了第一行并复制了所有其余的行……也许我可以使用“退出”选项?当然,我可以再次创建文件,而不会犯那个错误......

unix shell sed

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

如何从特定行启动shell脚本?

#!/bin/sh
echo "install 1"
echo "install 2"
[ $? -eq 0 ] || exit $?;
cyberciti 
[ $? -eq 0 ] || exit $?;
echo "install 3"
echo "install 4"
Run Code Online (Sandbox Code Playgroud)

上面的脚本在第4行(cyberciti)处失败.在进行必要的更正后,如何跳过已经执行的命令,如何获取行号,并从该行开始重新运行脚本?

linux shell

3
推荐指数
1
解决办法
2366
查看次数