我有一个很长的文件,我想打印但跳过第一个1e6行例如.我查看了猫手册页,但我没有看到任何选项.我正在寻找一个命令来做这个或一个简单的bash程序.
假设我有一个类似于以下的文件:
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) 我试图找出是否可以在单个sed命令中编辑文件,而无需手动将已编辑的内容流式传输到新文件中,然后将新文件重命名为原始文件名.我尝试了这个-i
选项,但我的Solaris系统说这-i
是一个非法的选择.有不同的方式吗?
由于未知长度的文本文件,我怎么能读,例如所有,但第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) 我对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) 我之前已经说过我不擅长编写脚本,所以我在下面将文件从共享目录复制到我的更改权限的地方.但后来我想删除每个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文件的第一行并让它每小时自动运行一次,或者指导我做一些我可能理解的事情来解决它?
我最近工作的一个问题让我希望我可以丢掉文件的正面.如果你愿意,有点像"前面的截断".在后端截断文件是一种常见的操作 - 我们做的事情甚至没有考虑太多.但是砍掉文件的正面?起初听起来很荒谬,但这只是因为我们受过训练才认为这是不可能的.但是在某些情况下,垂直操作可能很有用.
一个简单的例子(当然不是唯一或必然是最好的例子)是FIFO队列.您正在将新项目添加到文件末尾,并从前面将项目从文件中提取出来.文件随着时间的推移而增长,前面有一个巨大的空白空间.对于当前的文件系统,有几种解决此问题的方法:
但是如果有一个lop操作,从队列中删除一个项目就像更新文件开头标记一样简单.事实上,就像截断文件一样简单.那么,为什么没有这样的操作呢?
我对文件系统实现有一点了解,并且没有看到任何特殊原因这很难.它看起来像所有它需要的是另一个单词(dword,也许?)每个分配条目,以说明文件在块中的开始位置.对于1美元以下100美元以下的驱动器,这样的功能似乎是一个相当小的代价.
如果您可以像在最后截断那样有效地删除文件的前面,那么还可以使其他任务变得更容易?
你能想到这个功能无法添加到现代文件系统的任何技术原因吗?其他非技术原因?
我有一个大文本文件(~3GB)。在创建它时,我犯了一个错误,只有第一行的前几个(不是全部)字符是错误的。第一行中的其余字符是正确的。所有其他行也是正确的。我的,很简单,问题是:
如何删除这么大文件的前 n 个字符?我不想删除整个第一行,只删除前 n 个字符。我的要求是:
我试过 sed,但它替换了第一行并复制了所有其余的行……也许我可以使用“退出”选项?当然,我可以再次创建文件,而不会犯那个错误......
#!/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
)处失败.在进行必要的更正后,如何跳过已经执行的命令,如何获取行号,并从该行开始重新运行脚本?