hel*_*ndy 4 bash shell parsing text cut
当我输入时ls我得到:
aedes_aegypti_upstream_dremeready_all_simpleMasked_random.fasta
anopheles_albimanus_upstream_dremeready_all_simpleMasked_random.fasta
anopheles_arabiensis_upstream_dremeready_all_simpleMasked_random.fasta
anopheles_stephensi_upstream_dremeready_all_simpleMasked_random.fasta
culex_quinquefasciatus_upstream_dremeready_all_simpleMasked_random.fasta
Run Code Online (Sandbox Code Playgroud)
我想将其通过管道传输到 cut (或通过某种替代方式),以便我只得到:
aedes_aegypti
anopheles_albimanus
anopheles_arabiensis
anopheles_stephensi
culex_quinquefasciatus
Run Code Online (Sandbox Code Playgroud)
如果 cut 接受一个字符串(多个字符)作为分隔符,那么我可以使用:
cut -d "_upstream_" -f1
Run Code Online (Sandbox Code Playgroud)
但这是不允许的,因为 cut 只采用单个字符作为分隔符。
awk允许使用字符串作为分隔符:
$ awk -F"_upstream_" '{print $1}' file
aedes_aegypti
anopheles_albimanus
anopheles_arabiensis
anopheles_stephensi
culex_quinquefasciatus
drosophila_melanogaster
Run Code Online (Sandbox Code Playgroud)
请注意,对于给定的输入,您还可以使用cutwith_作为分隔符并打印前两条记录:
$ cut -d'_' -f-2 file
aedes_aegypti
anopheles_albimanus
anopheles_arabiensis
anopheles_stephensi
culex_quinquefasciatus
drosophila_melanogaster
Run Code Online (Sandbox Code Playgroud)
sed并且grep也能做到。例如,这grep使用前瞻打印从行开头开始的所有内容,直到找到_upstream:
$ grep -Po '^\w*(?=_upstream)' file
aedes_aegypti
anopheles_albimanus
anopheles_arabiensis
anopheles_stephensi
culex_quinquefasciatus
drosophila_melanogaster
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4151 次 |
| 最近记录: |