awk - awk:根据两列的连接值添加新列
问题描述
我正在尝试根据两列的连接值将新列添加到文本文件中。值被插入到中间而不是字符串的末尾。
我正在使用 awk。这是两个示例行
$ head -1 file.txt
8502CC169154|02|GA|TN|89840|9|2008-11-15 00:00:00.000|2009-11-15 00:00:00.000|1|TEAM1|1639009|1000000|0|2008-11-15 00:00:00.000|2009-11-15 00:00:00.000|85|00|37421||241|20|331|1052A|5000|0|.1500|Chattanooga|47065|.000|025|35|25000|0|0|0|0|0|718||E|-17.00|-17.00|-17.00|-17.00|-17.00|-2.55|-2.55|-2.55|-2.55|D|C9N7I4115531902|-2.19|-2.19|-2.19|-2.19|-14.81|051|2008-12-31 00:00:00.000|151|2008-12-17 00:00:00.000|||AC|CC|Y||2008-12-31 00:00:00.000|.000000|A|.000000|.000000|.000000|Y|8502CC169154-8|8502CC169154|8|||122130|122130M|7764298|RA
我尝试了以下。
$ head -1 file.txt | awk -F'|' '{$(NF+1)=$1"-"$6;}1' OFS='|'
我期待在字符串末尾有一个新列。但是您可以看到连接字段被插入到字符串的中间而不是字符串的末尾。
8502CC169154|02|GA|TN|89840|9|2008-11-15 00:00:00.000|2009-11-15 00:00:00.000|1|TEAM1|1639009|1000000|0|2008-11-15 00:00:00.000|2009-11-15 00:00:00.000|85|00|37421||241|20|331|1052A|5000|0|.1500|Chattanooga|47065|.000|025|35|25000|0|0|0|0|0|718||E|-17.00|-17.00|-17.00|-17.00|-17.00|-2.55|-2.55|-2.55|-2.55|D|C9N7I4115531902|-2.19|-2.19|-2.19|-2.19|-14.81|051|2008-12-31 00:00:00.000|151|2008|8502CC169154-9.000|||AC|CC|Y||2008-12-31 00:00:00.000|.000000|A|.000000|.000000|.000000|Y|8502CC169154-8|8502CC169154|8|||122130|122130M|7764298|RA
解决方案
您的原始代码使用 GNU awk 对我有用,但我怀疑并非所有 awk 都支持设置$(NF+1)
。为避免这种情况,请尝试:
head -1 file.txt | awk -F'|' '{$0=$0 FS $1"-"$6;}1' OFS='|'
awk 是一种令人惊讶的强大语言,它拥有所有的功能head
,使得管道变得不必要。因此,为了提高效率,请尝试以下简单命令:
awk -F'|' '{print $0 FS $1"-"$6; exit}' file.txt
这个怎么运作:
-F'|'
这会将字段分隔符设置为竖线。
print $0 FS $1"-"$6
这将打印您想要的输出行,该行由原始行 ,
$0
后跟字段分隔符 ,FS
以及第一个字段、破折号和第六个字段的组合组成。exit
打印第一行后,这告诉 awk 退出。这消除了对
head -1
.
推荐阅读
- google-chrome - 即使使用对象,Chrome 也会显示 frame-src 错误
- asp.net - 登录后 ASP.net 应用程序绕道到 IIS.net 网页
- c# - 如何将 ASP .NET Identity/Identity Framework DbContext 类合并到另一个 Assembly/Project 上的 DbContext 类
- helper - 如何计算二维表中的总数?
- reactjs - 在 VS Code 扩展 web 视图中发出 GET 请求时出现证书错误
- javascript - TypeScript 和 Jest - 自动创建完整的模拟?
- java - 意外按下不允许安装应用程序并记住 - Android Studio
- javascript - for循环和forEach循环在ejs中不起作用
- android - 您可以动态地将对象转换为类吗?
- javascript - 我需要一种方法来制作多个文本输出 onclick 按钮