Python 在文件的行首添加符号(#!)
我有一些文件,前三行只是一个标题。但要让我阅读它们,它们需要在开头添加一个注释符号,如Python 在文件的行首添加符号(#!),python,bash,file,Python,Bash,File,我有一些文件,前三行只是一个标题。但要让我阅读它们,它们需要在开头添加一个注释符号,如。 如果我的文件名为test.txt(如下所示示例),如何仅在前三行添加,如果可能,如果已经有,如何不添加注释符号 在前三行之后,我有了我的实际数据。因此,我希望它是: #A B C D #1 2 3 4 # 131 4.32 23 42 132 4.31 22 42 ... ... ... ... 因此,我可以轻松地使用python中的np.loadtxt
。
如果我的文件名为test.txt
(如下所示示例),如何仅在前三行添加
,如果可能,如果已经有
,如何不添加注释符号
在前三行之后,我有了我的实际数据。因此,我希望它是:
#A B C D
#1 2 3 4
#
131 4.32 23 42
132 4.31 22 42
... ... ... ...
因此,我可以轻松地使用python中的np.loadtxt('test.txt')
加载数据。
我的想法是,在bash中这将是最简单的,但是python也可以
谢谢你的帮助。你用
bash
标记了这个问题,这样你就可以在shell中尝试这个sed-one-liner了:
sed '1,3s/^/#/' file
如果要“就地”进行更改:添加-i
sed -i '1,3s/^/#/' file
编辑
如果已经有前导的#
,则跳过该行:
如果要使用
awk
,这可以工作:
awk '(NR<=3 && !/^#/) {$0="#"$0} {print}' your_file
已经有一些#
:
$cat s
#A B#C D
1 2 3 4
131 4.32 23 42
132 4.31 22 42
$awk'(nr使用数组中的readlines()读取文件。循环t数组并放置一个“#”在前3行前面。然后再次写出数组。pythonit的解决方案最好在提问之前做一些研究,并提出更精确的问题。干杯!我认为前面的检查遗漏了,正如OP所说,如果可能的话,如果已经有了#,就不要添加注释符号。sed'1,3s/^[^!#/#/文件
可以工作。@fedorqui是的,谢谢。我没有看到那一行。现在更新了。很好,+1!让我理解{/^#/!s/^/#/}
:这是否意味着如果/^#/
不s
,否则s/^/^/#/
?@fedorqui是的,你说的。和/foo/!d
一样。
sed '1,3{/^#/!s/^/#/}'
awk '(NR<=3 && !/^#/) {$0="#"$0} {print}' your_file
$ cat s
A B C D
1 2 3 4
131 4.32 23 42
132 4.31 22 42
$ awk '(NR<=3 && !/^#/) {$0="#"$0} {print}' s
#A B C D
#1 2 3 4
#
131 4.32 23 42
132 4.31 22 42
$ cat s
#A B # C D
1 2 3 4
131 4.32 23 42
132 4.31 22 42
$ awk '(NR<=3 && !/^#/) {$0="#"$0} {print}' s
#A B # C D
#1 2 3 4
#
131 4.32 23 42
132 4.31 22 42