একটি প্যাটার্ন দিয়ে শুরু করে লাইনে একটি লাইন ব্রেক serোকানো


0

আমার কাছে একটি বিশাল ফাইল রয়েছে যার নিম্নলিখিত ফর্ম্যাটটি রয়েছে:

#pair:  0   1   0   1   0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
0   0   1   
#pair:  1   2   0   1   1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
1   0   0   
#pair:  1   2   1   2   0   0   1

আমি "# যুক্ত:" দিয়ে শুরু হওয়া প্রতিটি লাইন খুঁজে পেতে এবং শেষ এই 3 টি কলাম সরাসরি এই লাইনের নীচে সরানো চাই। উদাহরণস্বরূপ:

#pair:  1   2   1   2   0   0   1

এতে পরিবর্তিত হয়:

#pair:  1   2   1   2   
0   0   1

লিনাক্সে কাজ করা কমান্ডের সাহায্যে আমি কীভাবে এটি করতে পারি?


এগুলি কি প্রতিটি 3 টি স্পেস বা ট্যাব দ্বারা পৃথক করা আছে? নাকি তা অপ্রাসঙ্গিক?
slhck

উত্তর:


1

এটি অ্যাডকের সাথে কিছুটা ভার্জোজ:

awk '
    $1=="#pair:" {
        sep=""
        for (i=1; i<NF-2; i++) {
            printf "%s%s", sep, $i
            sep="\t"
        }
        print ""
        printf "%s\t%s\t%s\n", $(NF-2), $(NF-1), $NF
        next
    }
    1
' <<END
#pair:  0       1       2       3       4       5       6
0       0       1
#pair:  0       1       2       31      4       5       6
0       0       1
END
#pair:  0       1       2       3
4       5       6
0       0       1
#pair:  0       1       2       31
4       5       6
0       0       1

1

আপনি এটি করতে বলতে পারেন sed:

sed '/^#/ s/'$'\t''\([0-9]'$'\t''[0-9]'$'\t''[0-9]\)$/\n\1/'
     ^    ^    ^     ^                                ^ ^
     |    |    |     |                                | |
     |  replace|   digit                              | What was remembered
line starts   tab                                     | in the 1st \(...\)
with a #                                           newline
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.