awk - 阻止 AWK 用空格替换制表符
问题描述
我正在尝试修改由空格和制表符分隔的文件中每一行的第一个字符。
在以下示例中,前 3 个空格是制表符,接下来的两个空格是空格。
cat example.gtf
1 havana gene 11896 14409 .
1 havana gene 12613 12227 .
我想m
在每一行的第一个值前面加上一个,如下所示......期望的输出.gtf。这可以通过awk '$1="m"$1' example.gtf > desiredOutput.gtf
cat desiredOutput.gtf
m1 havana gene 11896 14409 .
m1 havana gene 12613 12227 .
但是,awk 将前三个制表符替换为空格,从而破坏了输出文件的格式。如何防止 awk 将制表符更改为空格?
解决方案
$ cat file
1 havana gene 11896 14409 .
1 havana gene 12613 12227 .
按照简单性、清晰性和性能的降序排列:
$ awk '{print "m"$0}' file
m1 havana gene 11896 14409 .
m1 havana gene 12613 12227 .
$ awk '{$0="m"$0} 1' file
m1 havana gene 11896 14409 .
m1 havana gene 12613 12227 .
$ awk 'BEGIN{FS=OFS="\t"} {$1="m"$1} 1' file
m1 havana gene 11896 14409 .
m1 havana gene 12613 12227 .
推荐阅读
- java - 在此应用程序中添加代码后,该应用程序无法运行
- swift - 使用 Realm swift 初始化列表值
- azure - Outlook sso 令牌版本与新应用注册不匹配(预览版)
- compilation - 有没有好的可扩展语言交叉编译器?
- ruby-on-rails - 运行资产时忽略打字稿错误:预编译
- sql - Snowflake DB UDF 可以执行 SQL 命令吗?
- swift - 使用 Apple Photos SDK 读/写标签或关键字
- python - 如何在分号后没有指定秒数的 Z 字母解析日期时间
- c++ - 如何使用 Lua c API 正确读取字符串和表参数?
- android - 如何让我的 android 应用在 RTL 和 LTR 语言上看起来一样?