【问题标题】:How to modify text with sed or awk如何使用 sed 或 awk 修改文本
【发布时间】:2013-01-31 00:19:00
【问题描述】:

我想转换这个文件

hg19_ct_UserTrack_3545_12805 range=chr1:117217481-117217677 5'pad=0 3'pad=0 strand=+ repeatMasking=none
TCCTCATGAGTTTACATTCTTTATTAGTTTCTCTGTTTATGGTCATCTTC
CCCTGGGTATGTAAGCTGTCTGTGGGCTGGAATCTGGTCTGTCTTGTTCT
CTGGTGTTGGTCCAATGCCTAGAATAATGCCTAGCACATAGGATGTGATC
AACAAATATTTGTTGAATGAATACGTTCTAGTTGGAAAGACAATAAA .... etc

range=chr1:117217481-117217677 5'pad=0 3'pad=0 strand=+ repeatMasking=none
TCCTCATGAGTTTACATTCTTTATTAGTTTCTCTGTTTATGGTCATCTTC
CCCTGGGTATGTAAGCTGTCTGTGGGCTGGAATCTGGTCTGTCTTGTTCT
CTGGTGTTGGTCCAATGCCTAGAATAATGCCTAGCACATAGGATGTGATC
AACAAATATTTGTTGAATGAATACGTTCTAGTTGGAAAGACAATAAA .... etc

我一直在尝试 awk 和 sed,但没有运气。

【问题讨论】:

    标签: unix sed awk


    【解决方案1】:

    因为这是一个简单的替换,我会使用sed

    $ sed '1s/\w\+ //' file
    range=chr1:117217481-117217677 5'pad=0 3'pad=0 strand=+ repeatMasking=none
    TCCTCATGAGTTTACATTCTTTATTAGTTTCTCTGTTTATGGTCATCTTC
    CCCTGGGTATGTAAGCTGTCTGTGGGCTGGAATCTGGTCTGTCTTGTTCT
    CTGGTGTTGGTCCAATGCCTAGAATAATGCCTAGCACATAGGATGTGATC
    AACAAATATTTGTTGAATGAATACGTTCTAGTTGGAAAGACAATAAA
    

    解释:

    1   # First line only
    s/  # Subsitution 
    \w+ # Match one or more word character follow by a space
    /   # Replace with
    /   # Nothing
    

    默认情况下sed 打印到stdout,但您可以使用-i 选项直接将更改保存到文件:sed -i '1s/\w\+ //' file

    【讨论】:

    • GNU sed — 例如,不是 POSIX sed
    • @user1879573 在 stackoverflow 上表示感谢的方式是对所有有用的答案进行投票,并通过接受它来接受最有用的答案。您可以通过单击旁边的勾号来接受答案。更多信息请阅读FAQ
    【解决方案2】:

    您只需从第一行删除hg19_ct_UserTrack_3545_12805

    然后试试:

    awk 'NR==1{sub(/^[^ ]* /,"")}1' file
    

    【讨论】:

      猜你喜欢
      • 2015-03-19
      • 2013-02-18
      • 1970-01-01
      • 2011-01-10
      • 2013-01-26
      • 2013-02-18
      • 1970-01-01
      • 2020-09-26
      相关资源
      最近更新 更多