unix - 在特定列的连字符后保留部分字符串

标签 unix awk sed cut

对于输入文件中的第 2 列,我想保留连字符之后的部分。我试过 cut 命令,但不知道如何将它仅应用于第二列:

echo TCCCATATGGTCTAGCGGTTAGGATTCCT   1-230823 | cut -d - -f 2
230823

输入:

TCCCATATGGTCTAGCGGTTAGGATTCCT   1-230823
GCATTGGTGGTTCAGTGGTAGAATTCTC    2-172580

输出:

TCCCATATGGTCTAGCGGTTAGGATTCCT   230823
GCATTGGTGGTTCAGTGGTAGAATTCTC    172580

最佳答案

你可以使用这个 awk:

awk '{sub(/^[^-]*-/, "", $2)} 1' file
TCCCATATGGTCTAGCGGTTAGGATTCCT 230823
GCATTGGTGGTTCAGTGGTAGAATTCTC 172580

关于unix - 在特定列的连字符后保留部分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63881916/

相关文章:

linux - AWK 脚本 : Finding number of matches that each element in Col2 has in Col1

perl - 在特定的单个字段中保留字符串中的第一个字符

shell - 如何从标记开始将一个文件的内容追加到另一个文件中?

bash - bash 3.0 的 sed 命令出现乱码

macos - OS X/Linux : pipe into two processes?

security - 使用公钥和私钥的 SSH 通信

unix - 使用 sed 更改/etc/fstab

join - 使用 awk 合并两个表以创建新结果

bash - 用另一个文件中的行替换文件中的几行

unix - 根据文件名中的特定模式移动文件