如何在没有换行符的情况下将字符串添加到文件末尾?
例如,如果我使用>>它将添加到文件的末尾与换行符:
cat list.txt
yourText1
root@host-37:/# echo yourText2 >> list.txt
root@host-37:/# cat list.txt
yourText1
yourText2
Run Code Online (Sandbox Code Playgroud)
我想在yourText1之后添加yourText2
root@host-37:/# cat list.txt
yourText1yourText2
Run Code Online (Sandbox Code Playgroud) Curretly我使用以下命令来更改dos2unix行结尾,但这是for file-y file ..有一种方法可以对目录中的所有文件运行此命令
sed -i 's/\r//' filename
Run Code Online (Sandbox Code Playgroud)
谢谢,
试图重命名一堆文件.
我可以使用当前目录中的bar重命名foo的任何实例:
ls . | awk '{print("mv "$1" "$1)}' | sed 's/foo/bar/2' | /bin/sh
Run Code Online (Sandbox Code Playgroud)
我可以添加什么来使其递归?
编辑/我的解决方案
我不知道/理解这个shell类型的东西,所以我用一些(非常脏)Ruby做了:
5.times do
Dir["**/*"].each do |f|
file_name = File.absolute_path f
should_rename = file_name.include? "yolo"
new_file_name = file_name.gsub("yolo", "#{@project_name}")
File.rename(f, new_file_name) if (should_rename and File.exists? f)
end
end
Run Code Online (Sandbox Code Playgroud) 我在awk中有一个关联数组,它被填充如下:
chr_count[$3]++
Run Code Online (Sandbox Code Playgroud)
当我尝试打印我的时候chr_counts,我用这个:
for (i in chr_count) {
print i,":",chr_count[i];
}
Run Code Online (Sandbox Code Playgroud)
但毫不奇怪,i的顺序没有以任何方式排序.是否有一种简单的方法来迭代排序的键chr_count?
有没有办法从列的所有值中减去最小值?我需要从第一列中的所有其他数字中减去第一列中的第一个数字.
我写了这个脚本,但它没有给出正确的结果:
$ awk '{$1 = $1 - 1280449530}' file
1280449530 452
1280449531 2434
1280449531 2681
1280449531 2946
1280449531 1626
1280449532 3217
1280449532 4764
1280449532 4501
1280449532 3372
1280449533 4129
1280449533 6937
1280449533 6423
1280449533 4818
1280449534 4850
1280449534 8980
1280449534 8078
1280449534 6788
1280449535 5587
1280449535 10879
1280449535 9920
1280449535 8146
1280449536 6324
1280449536 12860
1280449536 11612
Run Code Online (Sandbox Code Playgroud) 我有一些复杂的日志文件,我需要编写一些工具来处理它们.我一直在玩awk,但我不确定awk是否适合这个.
我的日志文件是OSPF协议解码的打印输出,其中包含各种协议pkts的文本日志及其内容,以及用其值标识的各种协议字段.我想处理这些文件并只打印出与特定pkts相关的日志的某些行.每个pkt日志可以包含该pkt条目的不同行数.
awk似乎能够处理与模式匹配的单行.我可以找到所需的pkt然后我需要匹配后面的行中的模式,以确定它是否是我想要打印的pkt.
另一种看待这种情况的方法是,我希望在日志文件中隔离几行,并根据几行上的模式匹配打印出那些特定pkt细节的行.
由于awk似乎是基于行的,我不确定这是否是最好的工具.
如果awk可以做到这一点,怎么做?如果没有,有关于使用哪种工具的建议?
我试图执行一个ssh包含`sub-code`或$(子代码)的命令(我一直使用它但我不知道它的正式名称)要先执行,但是目标服务器.
为了论证,让我们说这是我想要使用的命令.当然这可以用hostname,但这只是一个简化的例子,包含我想要使用的所有格式化魔法.
echo `uname -a | awk '{print $2}'`
Run Code Online (Sandbox Code Playgroud)
没问题.但是你如何正确地逃避这一点以便ssh在一个命令中发送它?以下是错误的,因为它让服务器回复您的本地主机名.子代码在本地执行:
ssh myServer echo `uname -a | awk '{print $2}'`
Run Code Online (Sandbox Code Playgroud)
但任何浮出水面的想法都不起作用:
$ ssh myServer echo \`uname -a | awk '{print $2}'\`
awk: cmd. line:1: {print $2}`
awk: cmd. line:1: ^ invalid char '`' in expression
$ ssh myServer echo \$(uname -a | awk '{print $2}')
bash: syntax error near unexpected token `('
$ ssh myServer echo \$\(uname -a | awk '{print $2}')
bash: syntax error …Run Code Online (Sandbox Code Playgroud) 在文件中包含以下内容:
VARIABLE1="Value1"
VARIABLE2="Value2"
VARIABLE3="Value3"
Run Code Online (Sandbox Code Playgroud)
我需要一个输出以下内容的脚本:
Content of VARIABLE1 is Value1
Content of VARIABLE2 is Value2
Content of VARIABLE3 is Value3
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我想根据第6列中的值(大约10*10 ^ 3个唯一值)拆分一个大文件(10 ^ 6行).但是,由于记录的数量,我无法使其正常工作.它应该很容易,但它已经花了好几个小时,我没有进一步.
我尝试了两种选择:
选项1
awk '{print > $6".txt"}' input.file
awk: cannot open "Parent=mRNA:Solyc06g051570.2.1.txt" for output (Too many open files)
Run Code Online (Sandbox Code Playgroud)
选项2
awk '{print > $6; close($6)}' input.file
Run Code Online (Sandbox Code Playgroud)
这不会导致错误,但它创建的文件只包含对应于'grouping'值$ 6的最后一行
这是我的文件的开头,但是,这个文件不会导致错误,因为它太小了:
exon 3688 4407 + ID=exon:Solyc06g005000.2.1.1 Parent=mRNA:Solyc06g005000.2.1
exon 4853 5604 + ID=exon:Solyc06g005000.2.1.2 Parent=mRNA:Solyc06g005000.2.1
exon 7663 7998 + ID=exon:Solyc06g005000.2.1.3 Parent=mRNA:Solyc06g005000.2.1
exon 9148 9408 + ID=exon:Solyc06g005010.1.1.1 Parent=mRNA:Solyc06g005010.1.1
exon 13310 13330 + ID=exon:Solyc06g005020.1.1.1 Parent=mRNA:Solyc06g005020.1.1
exon 13449 13532 + ID=exon:Solyc06g005020.1.1.2 Parent=mRNA:Solyc06g005020.1.1
exon 13711 13783 + ID=exon:Solyc06g005020.1.1.3 Parent=mRNA:Solyc06g005020.1.1
exon 14172 14236 + ID=exon:Solyc06g005020.1.1.4 Parent=mRNA:Solyc06g005020.1.1 …Run Code Online (Sandbox Code Playgroud) 我们希望在行和列上对文本文件进行子集化,其中从文件中读取行和列编号.排除标题(第1行)和rownames(第1列).
inputFile.txt制表符分隔的文本文件
header 62 9 3 54 6 1
25 1 2 3 4 5 6
96 1 1 1 1 0 1
72 3 3 3 3 3 3
18 0 1 0 1 1 0
82 1 0 0 0 0 1
77 1 0 1 0 1 1
15 7 7 7 7 7 7
82 0 0 1 1 1 0
37 0 1 0 0 1 0
18 0 1 0 0 1 0 …Run Code Online (Sandbox Code Playgroud)