我有一个文本文件(制表符分隔),我需要在第3行添加新的标题行
[Tab] ABC123 ABC124
[Tab] High High
ENSG 8.9 7.2
我想要的新系列将是第3行,然后我想要打印欧洲5次,每次打印,然后是亚洲6次,每次打印之间的标签......
[Tab] ABC123 ABC124
[Tab] High High
[Tab] European European [this will be the new line]
ENSG 8.9 7.2
我想使用sed以便我可以使用
sed'4 i'
但我真的不知道如何将新内容实际打印/附加到新行中我猜我需要启动/欧洲/ \ t / a或类似内容。
基本上都在苦苦挣扎,可能是因为我没有聪明地进行Google搜索!
答案 0 :(得分:3)
使用sed '3i\ \tEuropean\tEuropean' file
:
$ cat file
ABC123 ABC124
High High
ENSG 8.9 7.2
$ sed '3i\ \tEuropean\tEuropean' file
ABC123 ABC124
High High
European European
ENSG 8.9 7.2
修改强>
我可能会做这样的事情awk 'NR==3{for(i=0;i<10;i++)s=s"\tEuropean";print s}1'
:
$ awk 'NR==3{for(i=0;i<10;i++)s=s"\tEuropean";print s}1' file
ABC123 ABC124
High High
European European European European European European European European European European
ENSG 8.9 7.2
答案 1 :(得分:2)
有几种方法可以做到这一点。一种技术是:
t="$(printf \\t)" # Assign t to be a string with one tab
sed -e '4i\
European${t}European...
' input-file > output-file
对于某些shell,您可以执行t=$"\t"
之类的操作,对于某些sed
,您不需要i
之后的文字换行符,但上面的内容非常便于携带。您可以随时使用文字tab
(您可能需要在交互式提示符下键入ctrl-v tab
)。
答案 2 :(得分:0)
这可能适合你(GNU):
sed -r '2!b;G;:a;/(\tEuropean){10}/!s/$/\tEuropean/;ta' file
10
可以是任意数量的重复字段\tEuropean