grep 结果:如何格式化每行一个结果的输出文件
grep results: how to format output file with one result for each line
我正在 bash 中使用 grep 命令解析文本文件。我想在另一个 txt 文件中打印输出。我正在使用这条线:
grep 'ACCESSION' chrom_CDS_2.txt | awk '{print [=11=]'\n'}' > accession_out.txt
accession_out.txt中的结果是这样的:
相反,如果我在 Microsoft Word 中打开 accession_out.txt,我会得到我尝试使用 bash 命令格式化的结果:
ACCESSION AC087816
ACCESSION AC091485
ACCESSION AC092153
ACCESSION AC092156
ACCESSION AC092159
ACCESSION AC092165
ACCESSION AC092176
ACCESSION AC092178
ACCESSION AC092206
ACCESSION AC092431
ACCESSION AC092455
ACCESSION AC092461
ACCESSION AC092533 AC027148
ACCESSION AC092567 AC040931
ACCESSION AC092569 AC068689
ACCESSION AC092570 AC060792
ACCESSION AC092573 AC015764
ACCESSION AC092575 AC018378
ACCESSION AC092587 AC023965
ACCESSION AC092598 AC027781
ACCESSION AC092603 AC073396
有人可以向我解释一下如何在记事本中获得与 Word 编辑器相同的可视化效果吗?
记事本似乎忽略了 '\n' 标签。
谢谢。
sed s'@ACCESSION@%ACCESSION@'g accession_out.txt | tr '%' '\n' > acc2.txt
mv acc2.txt accession_out.txt
添加回车 returns 非常棘手。据我所知,tr 和 ed 是仅有的两个可以做到这一点的实用程序。过去可以将八进制用于此类事情,但这是一种深奥的魔法,几乎没有人知道。
经过一些调整,使用awk
解决问题是一个想法。
您需要 \r
(Windows 换行符)并使用双引号。
grep 'ACCESSION' chrom_CDS_2.txt | awk '{print [=10=] "\r"}' > accession_out.txt
当你使用awk
时,你不需要grep
:
awk '/ACCESSION/ {print [=11=] "\r"}' chrom_CDS_2.txt > accession_out.txt
另一种可能性是使用sed
:默认情况下不打印行。当 ACCESSION
是该行的一部分时,将完整的行替换为完整的行(&
,匹配的部分),然后是 \r
并使用 /p
打印它。
sed -n 's/.*ACCESSION.*/&\r/p' chrom_CDS_2.txt > accession_out.txt
我正在 bash 中使用 grep 命令解析文本文件。我想在另一个 txt 文件中打印输出。我正在使用这条线:
grep 'ACCESSION' chrom_CDS_2.txt | awk '{print [=11=]'\n'}' > accession_out.txt
accession_out.txt中的结果是这样的:
相反,如果我在 Microsoft Word 中打开 accession_out.txt,我会得到我尝试使用 bash 命令格式化的结果:
ACCESSION AC087816
ACCESSION AC091485
ACCESSION AC092153
ACCESSION AC092156
ACCESSION AC092159
ACCESSION AC092165
ACCESSION AC092176
ACCESSION AC092178
ACCESSION AC092206
ACCESSION AC092431
ACCESSION AC092455
ACCESSION AC092461
ACCESSION AC092533 AC027148
ACCESSION AC092567 AC040931
ACCESSION AC092569 AC068689
ACCESSION AC092570 AC060792
ACCESSION AC092573 AC015764
ACCESSION AC092575 AC018378
ACCESSION AC092587 AC023965
ACCESSION AC092598 AC027781
ACCESSION AC092603 AC073396
有人可以向我解释一下如何在记事本中获得与 Word 编辑器相同的可视化效果吗?
记事本似乎忽略了 '\n' 标签。
谢谢。
sed s'@ACCESSION@%ACCESSION@'g accession_out.txt | tr '%' '\n' > acc2.txt
mv acc2.txt accession_out.txt
添加回车 returns 非常棘手。据我所知,tr 和 ed 是仅有的两个可以做到这一点的实用程序。过去可以将八进制用于此类事情,但这是一种深奥的魔法,几乎没有人知道。
经过一些调整,使用awk
解决问题是一个想法。
您需要 \r
(Windows 换行符)并使用双引号。
grep 'ACCESSION' chrom_CDS_2.txt | awk '{print [=10=] "\r"}' > accession_out.txt
当你使用awk
时,你不需要grep
:
awk '/ACCESSION/ {print [=11=] "\r"}' chrom_CDS_2.txt > accession_out.txt
另一种可能性是使用sed
:默认情况下不打印行。当 ACCESSION
是该行的一部分时,将完整的行替换为完整的行(&
,匹配的部分),然后是 \r
并使用 /p
打印它。
sed -n 's/.*ACCESSION.*/&\r/p' chrom_CDS_2.txt > accession_out.txt