1

テキストファイル(タブ区切り)があり、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'

しかし、実際に新しいコンテンツをその新しい行に印刷/追加する方法がわからないので、/ European / \ t/aなどを開始する必要があると思います。

基本的に苦労しています。おそらく私が賢くグーグルしていないからでしょう。

4

3 に答える 3

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
于 2013-01-11T16:07:16.540 に答える
2

これを行うにはいくつかの方法があります。1つのテクニックは次のとおりです。

t="$(printf \\t)"  # Assign t to be a string with one tab
sed -e '4i\
European${t}European...
' input-file > output-file

t=$"\t"一部のシェルでは、のようなことができます。一部のシェルでは、sedの後に文字通りの改行は必要ありませんiが、上記はかなり移植性があります。いつでもリテラルを使用できます(インタラクティブなプロンプトで入力するtab必要がある場合があります)。ctrl-v tab

于 2013-01-11T16:07:31.657 に答える
0

これはあなたのために働くかもしれません(GNU):

sed -r '2!b;G;:a;/(\tEuropean){10}/!s/$/\tEuropean/;ta' file

10繰り返されるフィールドはどこにいくつでもかまいません\tEuropean

于 2013-01-11T19:47:33.720 に答える