Input 使用awk或sed提取每列的第一个字符,并将其存储在单独的文件中

Input 使用awk或sed提取每列的第一个字符,并将其存储在单独的文件中,input,awk,Input,Awk,我有一个像下面这样的文件 AT AT AG AG GC GC GG GC 我想提取每个列的第一个和最后一个字符,并将它们存储在两个不同的文件中 文件1: A A A A G G G G 文件2: T T G G C C G C 我的输入文件很大。这是一种我可以在awk或sed中完成的方式吗?只需两次就可以轻松完成: sed 's/\([^ ]\)[^ ]/\1/g' file > file1 sed 's/[^ ]\([^ ]\)/\1/g' file > file2 一次传

我有一个像下面这样的文件

AT AT AG AG
GC GC GG GC
我想提取每个列的第一个和最后一个字符,并将它们存储在两个不同的文件中

文件1:

A A A A
G G G G
文件2:

T T G G
C C G C

我的输入文件很大。这是一种我可以在awk或sed中完成的方式吗?

只需两次就可以轻松完成:

sed 's/\([^ ]\)[^ ]/\1/g' file > file1
sed 's/[^ ]\([^ ]\)/\1/g' file > file2

一次传球是一项挑战…

两次传球很容易做到:

sed 's/\([^ ]\)[^ ]/\1/g' file > file1
sed 's/[^ ]\([^ ]\)/\1/g' file > file2

一次传球是一项挑战…

两次传球很容易做到:

sed 's/\([^ ]\)[^ ]/\1/g' file > file1
sed 's/[^ ]\([^ ]\)/\1/g' file > file2

一次传球是一项挑战…

两次传球很容易做到:

sed 's/\([^ ]\)[^ ]/\1/g' file > file1
sed 's/[^ ]\([^ ]\)/\1/g' file > file2

一次完成是一项挑战…

编辑1:为您的多行编辑而修改

如果您打算编辑并共享它,您可以编写一个perl脚本并传入文件名。这只在文件中循环一次,不需要将文件存储在内存中

文件“seq.pl”:

文件“full.seq”:

文件“f1.seq”:

文件“f2.seq”:


编辑1:为多行编辑而修改

如果您打算编辑并共享它,您可以编写一个perl脚本并传入文件名。这只在文件中循环一次,不需要将文件存储在内存中

文件“seq.pl”:

文件“full.seq”:

文件“f1.seq”:

文件“f2.seq”:


编辑1:为多行编辑而修改

如果您打算编辑并共享它,您可以编写一个perl脚本并传入文件名。这只在文件中循环一次,不需要将文件存储在内存中

文件“seq.pl”:

文件“full.seq”:

文件“f1.seq”:

文件“f2.seq”:


编辑1:为多行编辑而修改

如果您打算编辑并共享它,您可以编写一个perl脚本并传入文件名。这只在文件中循环一次,不需要将文件存储在内存中

文件“seq.pl”:

文件“full.seq”:

文件“f1.seq”:

文件“f2.seq”:

您可以尝试以下方法:

write-in-test.awk

#!/usr/bin/awk -f

 BEGIN {

 #   FS = "[\s]+"
     outfile_head="file1"
     outfile_tail="file2"
 }

     {
         num = NF
         for(i = 1; i <= NF; i++) {
             printf "%s ", substr($i, 0, 1) >> outfile_head
             printf "%s ", substr($i, length($i), 1) >> outfile_tail
         }
     }
#/usr/bin/awk-f
开始{
#FS=“[\s]+”
outfile_head=“file1”
outfile_tail=“file2”
}
{
num=NF
对于(i=1;i>外压头
printf“%s”,substr($i,长度($i),1)>>outfile\u tail
}
}
然后运行以下命令: ./test.awk文件

您可以尝试以下方法:

write-in-test.awk

#!/usr/bin/awk -f

 BEGIN {

 #   FS = "[\s]+"
     outfile_head="file1"
     outfile_tail="file2"
 }

     {
         num = NF
         for(i = 1; i <= NF; i++) {
             printf "%s ", substr($i, 0, 1) >> outfile_head
             printf "%s ", substr($i, length($i), 1) >> outfile_tail
         }
     }
!/usr/bin/awk-f
开始{
#FS=“[\s]+”
outfile_head=“file1”
outfile_tail=“file2”
}
{
num=NF
对于(i=1;i>外压头
printf“%s”,substr($i,长度($i),1)>>outfile\u tail
}
}
然后运行以下命令: ./test.awk文件

您可以尝试以下方法:

write-in-test.awk

#!/usr/bin/awk -f

 BEGIN {

 #   FS = "[\s]+"
     outfile_head="file1"
     outfile_tail="file2"
 }

     {
         num = NF
         for(i = 1; i <= NF; i++) {
             printf "%s ", substr($i, 0, 1) >> outfile_head
             printf "%s ", substr($i, length($i), 1) >> outfile_tail
         }
     }
!/usr/bin/awk-f
开始{
#FS=“[\s]+”
outfile_head=“file1”
outfile_tail=“file2”
}
{
num=NF
对于(i=1;i>外压头
printf“%s”,substr($i,长度($i),1)>>outfile\u tail
}
}
然后运行以下命令: ./test.awk文件

您可以尝试以下方法:

write-in-test.awk

#!/usr/bin/awk -f

 BEGIN {

 #   FS = "[\s]+"
     outfile_head="file1"
     outfile_tail="file2"
 }

     {
         num = NF
         for(i = 1; i <= NF; i++) {
             printf "%s ", substr($i, 0, 1) >> outfile_head
             printf "%s ", substr($i, length($i), 1) >> outfile_tail
         }
     }
!/usr/bin/awk-f
开始{
#FS=“[\s]+”
outfile_head=“file1”
outfile_tail=“file2”
}
{
num=NF
对于(i=1;i>外压头
printf“%s”,substr($i,长度($i),1)>>outfile\u tail
}
}
然后运行以下命令: /test.awk文件

,其中GNU awk用于gensub():

您可以使用gsub()和几个变量在任何awk中执行类似操作。

使用GNU awk for gensub():

您可以使用gsub()和几个变量在任何awk中执行类似操作。

使用GNU awk for gensub():

您可以使用gsub()和几个变量在任何awk中执行类似操作。

使用GNU awk for gensub():


您可以使用gsub()和几个变量在任何awk中执行类似操作。

请告诉我们您到目前为止尝试了什么。请告诉我们您到目前为止尝试了什么。请告诉我们您到目前为止尝试了什么。请告诉我们您到目前为止尝试了什么。