bash - grep 结果:如何格式化输出文件,每行一个结果
问题描述
我正在用 bash 中的 grep 命令解析文本文件。我想在另一个 txt 文件中打印输出。我正在使用这条线:
grep 'ACCESSION' chrom_CDS_2.txt | awk '{print $0'\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' 标记。
谢谢你。
解决方案
经过awk
一些调整后,用于解决问题是一个想法。
您需要\r
(Windows 换行符)并使用双引号。
grep 'ACCESSION' chrom_CDS_2.txt | awk '{print $0 "\r"}' > accession_out.txt
使用时awk
,您不需要grep
:
awk '/ACCESSION/ {print $0 "\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
推荐阅读
- java - 当另一个 ComboBox 的值更改时,如何更改 ComboBox 的项目?
- react-native - 与导航交换路线
- azure-log-analytics - Azure LogAnalytics 解析 JSON 数组
- google-cloud-platform - 部署云功能时google Bigquery导入错误
- javascript - ASP.Net - 如果任何控件值发生更改,如何隐藏(打印)按钮
- c - lwip 板无法保持与另一个 lwip 板的连接
- php - 如何将 ob_get_contents 与带参数的函数一起使用
- python - 使用 Python 抓取看似具有挑战性的 HTML 表格
- ios - 在视图之外触发时如何绑定 SwiftUI.Alert 的呈现?
- angular - 如何在用户输入按键事件中调用多个请求?