linux - awk打印一行的一些参数

标签 linux bash shell sh

我在 linux 的文件中有几行,我正在尝试打印没有 | 且没有一些参数的行

$cat file 
2013-07-15,Provider 1.99,3|30000055|2347|0,12222,1,3,0,0,0,19,aaa,bbb
2013-07-15,Provider 1.99,3|30000055|2347|0,12222,44,12,0,0,0,33,aaa,bbb

我需要这样的输出:

2013-07-15,Provider,2347,12222,1,3,0,0,0,19,aaa,bbb
2013-07-15,Provider,2347,12222,44,12,0,0,0,33,aaa,bbb

我正在尝试使用 awk,但我遇到了一些问题。

最佳答案

如果你的线条有相似的模式你想保留那么你可以这样做:

awk 'BEGIN{FS=OFS=","}{$2="Provider";$3=2347}1' file

如果您不知道模式是什么,那么这里有一个更通用的模式:

awk 'BEGIN{FS=OFS=","}{split($2,a,/ /);split($3,b,/\|/);$2=a[1];$3=b[3]}1' file

如果它不能解决您的问题,我很确定它会帮助您获得一个。

关于linux - awk打印一行的一些参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17688865/

相关文章:

linux - 如何实现一个流程来监督另一个流程?

linux - Ctrl+v 在终端粘贴

bash - 使用 ssh 运行远程脚本文件时如何使用空格保留参数?

Python 子进程将调用输出存储到文件

linux - linux支持多点触摸屏吗

c++ - 我可以获得在键盘上按下某个键的时间量吗

bash - 如何让 `make` 提示用户输入密码并将其存储在 Makefile 变量中?

linux克隆和pthreads

bash - Vim:读取输入错误

bash - 在将 tee 发送到文件之前,如何从 tee 获取 "process"文本