【发布时间】:2015-09-23 07:10:48
【问题描述】:
我需要更改文件中的一行。它总是在文件的第一行。
看起来像:
h\tn0 n1 n2 n3 n4 n5 n6 n7 n8 n9 hilu cjt 1 1000000
除了 h 之外的所有空白处都有一个制表符。
我需要将该行重新转换为
h n1 n2 n3 n4 n5 n6 n7 n8 n9
hilu cjt 1 1000000
在行的开头,\t 和 n0 需要去,并且在 h 和 n1 之间需要有一个制表符。然后换行需要在 hilu 之前开始,但 n9 之后不应该有额外的选项卡
理想情况下,我只需将我的文件提供给脚本,就不需要编写中间脚本来填充。
在 Perl 或 python 中可能有一个高效的版本吗?我考虑过 R,但文件中有 1000 行,只需要更改第一个留置权...
尝试使用 jahid 的解决方案从 r 运行它
> system(paste("sed -r \'1s/(.*)\t(REGION.*)/\1\n\2/;1s/\\t[^[:space:]]+//\'","arg_t1"))
sed: -e expression #1, char 20: unterminated `s' command
根据我得到的通讯建议
> system(paste("sed -r \"1s/(.*)\t(REGION.*)/\1\n\2/;1s/\\t[^[:space:]]+//\"","arg_t1"))
sed: -e expression #1, char 20: unterminated `s' command
【问题讨论】:
-
为什么要给你的问题加上 Perl 标签?
-
@Borodin 我猜“在 perl 或 python 中可能有一个高效的版本吗?”在问题中解决了吗?
-
@Borodin 大概是因为他或她想在 Perl 中这样做。
-
是的认为这可能只是这种语言有一个有效的版本......我知道我用其他语言考虑的解决方案需要阅读整个文件,其中是 rubish
-
那么你尝试了什么?