awk - 在 text.file 中切换列

我有这样的 file.txt


4142 2019-01-08T.002:00 JrNewman 080592Kl Developer 
2125 2016-11-455.+02:00 Jackson John 180784SRE1 Maintainer 
2293 2016-12-4100+02:00 Jackson John AZbissness Developer 
1938 2015T12:1600+02:00 Jackson John AZ19043A4A Developer 
2126 2016-123:46.003:00 Jackson John OZ40784SA3 Maintainer 
2033 201615:33:28.00:00 Allen Robert JR pDbissness Developer 
4846 202212:48:34+02:00 Walker Tom JR autotestbit Maintainer 
5362 2022-12:440+302:00 Walker Tom Jr autotestbit Maintainer 
2131 2012T21:.000+03:00 Allen Robert Jr Z1EW843V1 Maintainer 
2128 2013T206.000+02:00 Administrator LL23042DE Guest 

需要这样的东西

4142 2019-01-08T.002:00 080592Kl Developer JrNewman
2125 2016-11-455.+02:00 180784SRE1 Maintainer Jackson John
2293 2016-12-4100+02:00 AZbissness Developer Jackson John
1938 2015T12:1600+02:00 AZ19043A4A Developer Jackson John
2126 2016-123:46.003:00 OZ40784SA3 Maintainer Jackson John
2033 201615:33:28.00:00 pDbissness Developer Allen Robert JR
4846 202212:48:34+02:00 JR autotestbit Maintainer Walker Tom
5362 2022-12:440+302:00 autotestbit Maintainer Walker Tom Jr
2131 2012T21:.000+03:00 Z1EW843V1 Maintainer Allen Robert Jr
2128 2013T206.000+02:00 LL23042DE Guest Administrator

我知道我可以使用 awk print $column 并写入文件。 但我做不到((

最佳答案

使用您展示的示例,请尝试遵循 awk 代码。用 GNU awk 编写和测试,应该可以在任何 awk 中使用。简单的解释是使用 match 函数首先在 val1 变量中获取前 2 个字段,并在 len 变量中获取其长度。然后使用另一个 match 匹配最后 2 个字段,然后打印前 2 个字段、最后 2 个字段以及所有其余名称值之间(可以是单个值或 2 个值等等)。

awk '
match($0,/^[^[:space:]]+[[:space:]]+[^[:space:]]+[[:space:]]+/){
  val1=substr($0,RSTART,RLENGTH)
  len=RSTART+RLENGTH
}
match($0,/[^[:space:]]+[[:space:]]+[^[:space:]]+$/){
  print val1 substr($0,RSTART,RLENGTH),substr($0,len,RSTART-len)
}
' Input_file

https://stackoverflow.com/questions/72782093/

相关文章:

c# - 返回匿名类型的 IEnumerable

java - BitSet 的 set 方法如何处理向左移动的位?

string - 如何将字符串中的 "Umlaute"(ü)转为 "ue"?

java - 使用流 groupingBy 时将字符串分组为多个组

python - 通过多级函数传递 kwargs,解包其中一些但传递所有函数

multithreading - 我怎样才能避免这个循环中的 "i"依赖?语言

python - FastAPI 多个路由绑定(bind)到同一个函数。如何知道请求了哪一个

bash - awk 或条件

r - 为什么带有 %in% 的条件会忽略缺失值?

sql - SQL Server 中 OVER 和 PARTITION BY 生成的值的状态