Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用awk将字段分隔符“,”改为空白

用awk将字段分隔符“,”改为空白
EN

Stack Overflow用户
提问于 2022-10-19 03:52:57
回答 3查看 49关注 0票数 2

我有以下几点:

代码语言:javascript
运行
AI代码解释
复制
ID_REF,GSM2819484,GSM2819485,GSM2819486,GSM2819487,GSM2819488,GSM2819489,GSM2819490,GSM2819491,GSM2819492,GSM2819493,GSM2819494,GSM2819495,GSM2819496,GSM2819497,GSM2819498,GSM2819499,GSM2819500,GSM2819501,GSM2819502,GSM2819503,GSM2819504,GSM2819505,GSM2819506,GSM2819507,GSM2819508,GSM2819509,GSM2819510,GSM2819511,GSM2819512,GSM2819513,GSM2819514,GSM2819515,GSM2819516,GSM2819517,GSM2819518,GSM2819519,GSM2819520,GSM2819521,GSM2819522,GSM2819523,GSM2819524,GSM2819525,GSM2819526,GSM2819527,GSM2819528,GSM2819529,GSM2819530,GSM2819531,GSM2819532,GSM2819533,GSM2819534,GSM2819535,GSM2819536,GSM2819537,GSM2819538,GSM2819539,GSM2819540,GSM2819541,GSM2819542,GSM2819543,GSM2819544,GSM2819545,GSM2819546,GSM2819547,GSM2819548,GSM2819549,GSM2819550,GSM2819551,GSM2819552,GSM2819553,GSM2819554,GSM2819555,GSM2819556,GSM2819557,GSM2819558,GSM2819559,GSM2819560,GSM2819561,GSM2819562,GSM2819563,GSM2819564,GSM2819571,GSM2819572,GSM2819573,GSM2819574,GSM2819575,GSM2819576,GSM2819577,GSM2819578,GSM2819579,GSM2819580,GSM2819581,GSM2819582,GSM2819583,GSM2819584,GSM2819585,GSM2819586,GSM2819587,GSM2819588,GSM2819589,GSM2819590,GSM2819591,GSM2819592,GSM2819593,GSM2819594,GSM2819595,GSM2819596

为什么这段代码不起作用?

代码语言:javascript
运行
AI代码解释
复制
awk 'BEGIN { FS=",";OFS= " "}{print $0}' file

另外,如何跳过打印"ID_REF"?

期望产出:

代码语言:javascript
运行
AI代码解释
复制
GSM2819484 GSM2819485 GSM2819486 GSM2819487 GSM2819488 GSM2819489 GSM2819490 GSM2819491 GSM2819492 GSM2819493 GSM2819494 GSM2819495 GSM2819496 GSM2819497 GSM2819498 GSM2819499 GSM2819500 GSM2819501 GSM2819502 GSM2819503 GSM2819504 GSM2819505 GSM2819506 GSM2819507 GSM2819508 GSM2819509 GSM2819510 GSM2819511 GSM2819512 GSM2819513 GSM2819514 GSM2819515 GSM2819516 GSM2819517 GSM2819518 GSM2819519 GSM2819520 GSM2819521 GSM2819522 GSM2819523 GSM2819524 GSM2819525 GSM2819526 GSM2819527 GSM2819528 GSM2819529 GSM2819530 GSM2819531 GSM2819532 GSM2819533 GSM2819534 GSM2819535 GSM2819536 GSM2819537 GSM2819538 GSM2819539 GSM2819540 GSM2819541 GSM2819542 GSM2819543 GSM2819544 GSM2819545 GSM2819546 GSM2819547 GSM2819548 GSM2819549 GSM2819550 GSM2819551 GSM2819552 GSM2819553 GSM2819554 GSM2819555 GSM2819556 GSM2819557 GSM2819558 GSM2819559 GSM2819560 GSM2819561 GSM2819562 GSM2819563 GSM2819564 GSM2819571 GSM2819572 GSM2819573 GSM2819574 GSM2819575 GSM2819576 GSM2819577 GSM2819578 GSM2819579 GSM2819580 GSM2819581 GSM2819582 GSM2819583 GSM2819584 GSM2819585 GSM2819586 GSM2819587 GSM2819588 GSM2819589 GSM2819590 GSM2819591 GSM2819592 GSM2819593 GSM2819594 GSM2819595 GSM2819596
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-10-19 03:57:28

你可以使用:

代码语言:javascript
运行
AI代码解释
复制
awk -F, '{sub(/^[^,]*,/, ""); $1=$1} 1' file

GSM2819484 GSM2819485 GSM2819486 GSM2819487 GSM2819488 GSM2819489 GSM2819490 GSM2819491 GSM2819492 GSM2819493 GSM2819494 GSM2819495 GSM2819496 GSM2819497 GSM2819498 GSM2819499 GSM2819500 GSM2819501 GSM2819502 GSM2819503 GSM2819504 GSM2819505 GSM2819506 GSM2819507 GSM2819508 GSM2819509 GSM2819510 GSM2819511 GSM2819512 GSM2819513 GSM2819514 GSM2819515 GSM2819516 GSM2819517 GSM2819518 GSM2819519 GSM2819520 GSM2819521 GSM2819522 GSM2819523 GSM2819524 GSM2819525 GSM2819526 GSM2819527 GSM2819528 GSM2819529 GSM2819530 GSM2819531 GSM2819532 GSM2819533 GSM2819534 GSM2819535 GSM2819536 GSM2819537 GSM2819538 GSM2819539 GSM2819540 GSM2819541 GSM2819542 GSM2819543 GSM2819544 GSM2819545 GSM2819546 GSM2819547 GSM2819548 GSM2819549 GSM2819550 GSM2819551 GSM2819552 GSM2819553 GSM2819554 GSM2819555 GSM2819556 GSM2819557 GSM2819558 GSM2819559 GSM2819560 GSM2819561 GSM2819562 GSM2819563 GSM2819564 GSM2819571 GSM2819572 GSM2819573 GSM2819574 GSM2819575 GSM2819576 GSM2819577 GSM2819578 GSM2819579 GSM2819580 GSM2819581 GSM2819582 GSM2819583 GSM2819584 GSM2819585 GSM2819586 GSM2819587 GSM2819588 GSM2819589 GSM2819590 GSM2819591 GSM2819592 GSM2819593 GSM2819594 GSM2819595 GSM2819596

在此:

  • sub(/^[^,]*,/, "")删除第一个逗号之前的第一个值,第一个comma
  • $1=$1强制awk使用默认的OFS重新生成记录,这是一个空格。

使用{print $0}时,不管OFS值是什么,它都会打印原始记录,而不受篡改。您需要强制awk通过更改任何列来重建记录,就像我做的$1=$1 (虚拟赋值)一样。

另一种解决办法可以是:

代码语言:javascript
运行
AI代码解释
复制
awk -F, '{$1=""; print substr($0, 2)}' file
票数 4
EN

Stack Overflow用户

发布于 2022-10-19 04:07:42

您还可以为此使用cut

代码语言:javascript
运行
AI代码解释
复制
$ s='ID_REF,GSM2819484,GSM2819485,GSM2819486,GSM2819487'
$ echo "$s" | cut -d, --output-delimiter=' ' -f2-
GSM2819484 GSM2819485 GSM2819486 GSM2819487

  • -d,将输入分隔符指定为,
  • --output-delimiter=' '集空间作为输出delimiter
  • -f2-打印除第一个

以外的所有字段

票数 2
EN

Stack Overflow用户

发布于 2022-10-19 04:23:55

如果您只想使用空格字符替换,字符,则可以为此使用工具- tr命令,如下所示,让file.txt内容为

代码语言:javascript
运行
AI代码解释
复制
ID_REF,GSM2819484,GSM2819485,GSM2819486,GSM2819487,GSM2819488,GSM2819489

然后

代码语言:javascript
运行
AI代码解释
复制
tr ',' ' ' < file.txt

给予输出

代码语言:javascript
运行
AI代码解释
复制
ID_REF GSM2819484 GSM2819485 GSM2819486 GSM2819487 GSM2819488 GSM2819489

请注意,与GNU不同的是,AWK tr仅限于标准输入,也就是说,您不能给它命名文件的名称,就像GNU AWK那样。

如果您严格限于GNU AWK,那么使用gsub函数可能会得到如下相同的效果

代码语言:javascript
运行
AI代码解释
复制
awk '{gsub(/,/," ");print}' file.txt

注意gsub是内嵌的,也就是说它确实改变了处理(默认:$0),然后是print编辑的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74124865

复制
相关文章
Typecho分隔符导致意外空白修复
在网上查看很多的帖子都是在 hypedown模块中注释掉对 \n 的解析 这样的做法是不行的,因为这样文章中的换行就会失效,所有的文字就堆到一起了。
雪碧君
2023/02/13
2790
如何将生产环境的字段类型从INT修改为BIGINT
介绍 改变数据类型是一个看起来很简单的事情,但是如果表非常大或者有最小停机时间的要求,又该如何处理那?这里我提供一个思路来解决这个问题。 背景 在一个常规SQL Server heath检查中,使用sp_blitz,我们最大的生产表之一引发了令人担忧的警报。保存客户订单信息的表的ID列是一个INT datatype,很快就将达到最大值。 这个表大约有500GB,有超过9亿行。根据在该表上每天的平均插入数,我估计未来八个月后,在这张表上的插入将会溢出。这是一个订单输入表,由于客户的活动,需要24小时的插入。一
用户1217611
2018/03/29
5.2K0
如何将生产环境的字段类型从INT修改为BIGINT
如何将生产环境的字段类型从INT修改为BIGINT
改变数据类型是一个看起来很简单的事情,但是如果表非常大或者有最小停机时间的要求,又该如何处理那?这里我提供一个思路来解决这个问题。
全栈程序员站长
2021/11/29
3.2K0
如何将生产环境的字段类型从INT修改为BIGINT
oracle number字段改为integer「建议收藏」
原文链接:http://www.fengyachao.com/archives/69
全栈程序员站长
2022/09/15
7400
常用 linux 命令集锦
文章涉及到vim\grep\cat\more\less\echo\sed\awk的入门用法。
一个会写诗的程序员
2022/01/07
4.5K0
Linux-awk及内置变量
awk(分析&处理) awk是一个数据处理工具,相比于sed常常作用于一整行的处理,awk则比较倾向于将一行分成数个”字段“来处理。
小小工匠
2021/08/16
2.1K0
Java将数组用固定分隔符拼接成字符串
比如有一个数组是 String[] array = [ 'a', 'b', 'c' ],我希望把该数组中每个元素直接用 ' - ' 来拼接,得到 ”a-b-c",那么应该如何实现呢?
用户7741497
2022/03/21
3.5K1
awk详解「建议收藏」
awk是linux中处理文本的强大工具,或者说是一种专门处理字符串的语言,它有自己的编码格式。awk的强大之处还在于能生成强大的格式化报告。 awk的命令格式如下:
全栈程序员站长
2022/09/08
1.8K0
awk详解「建议收藏」
用awk写递归
看到自己很多年前写的一篇帖子,觉得有些意义,转录过来,稍加修改。 awk是一种脚本语言,语法接近C语言,我比较喜欢用,gawk甚至可以支持tcp/ip,用起来非常方便。 awk也支持递归,只是awk不支持局部变量,所有的变量都是全局的,于是写递归有些麻烦。本文说白了,也只是借awk说一种编程的思路罢了。 原文如下: awk支持函数,也支持递归。但awk并不支持局部变量,于是看上去递归函数很不好实现,因为在某一级调用函数的时候,里面的变量在该级调用还没有退出前就可能会被别的调用给修改掉,于是得到的结果会与期望
窗户
2018/02/07
1.6K0
linux awk 内置变量实例
它处理文本的速度是快得惊人的,现在很多基于shell 日志分析工具都可以用它完成。特点是设计简单,速度表现很好,本文将介绍awk内置变量。
阳光岛主
2019/02/19
2.8K0
openwrt将LAN口改为WAN方法
牢骚 折腾了好几个好几个小时,终于搞好了。原因就是因为固件里面的端口序号和实际路由器后面的序号不一致,导致我的设置和物理连接对不上,这是个巨坑。 折腾需求 PS:我家里面有两条宽带,一条中国联通50M,一条中国移动50M。 折腾多WAN口(就是把LAN口改为WAN口)的主要目的是我想是默认上网走联通,部分IP(什么IP你懂的)通过静态路由走移动出去,因为移动的国际出口在中国香港,出国速度相对来说好一些。 折腾方法 1.依次点开-网络-交换机 2.首先要启用VLan,可
行 者
2018/03/26
16.9K0
openwrt将LAN口改为WAN方法
python 将网卡改为嗅探功能
def pktPrint(pkt): if pkt.haslayer(Dot11Beacon): print '[+] Detected 802.11 Beacon Frame' elif pkt.haslayer(Dot11ProbeReq): print '[+] Detected 802.11 Probe Request Frame' elif pkt.haslayer(TCP): print '[+] Detected a TCP Packet' elif pkt.haslayer(DNS): print '[+] Detected a DNS Packet'
用户5760343
2019/07/31
1.3K0
python 将网卡改为嗅探功能
Linux - awk
默认的字段分隔符是任意空白字符(如空格或制表符),也可以用 -F 参数自定义分隔符
用户10328045
2023/02/18
3.8K0
AWK中的字段,记录和变量【Programming】
本文为awk入门系列的第二篇文章,在本篇文章中,你可以了解到有关字段,记录和一些功能强大的awk变量。
Potato
2019/11/09
2.1K0
AWK中的字段,记录和变量【Programming】
nestjs将底层由express改为fastify
nestjs默认使用的http框架为express,代码如下:// 输入代码内容import { NestFactory } from '@nestjs/core';import { AppModule } from './app.module';async function bootstrap() { const app = await NestFactory.create(AppModule); await app.listen(3000);}bootstrap();在这里将express替换为fa
挥刀北上
2023/05/24
8190
nestjs将底层由express改为fastify
Linux Awk用法总结
目录 Awk是什么 命令行语法 脚本(Script)组成 模式(Pattern) 正则表达式(Regular Expression) 表达式(Expressions) 数组 内置变量 删除ARGV元素
小小科
2018/05/03
6.8K0
Linux Awk用法总结
linux awk 函数定义变量赋值,Linux中的Awk定义、用法详解
  Awk、sed与grep,俗称Linux下的三剑客,它们之前有很多相似点,但是同样也各有各的特色,相似的地方是它们都可以匹配文本,其中sed和awk还可以用于文本编辑,而grep则不具备这个功用。sed是一种非交互式且面向字符流的编辑器(a “non-” stream- editor),而awk则是一门模式匹配的编程语言,因为它的主要功能是用于匹配文本并处理,同时它有一些编程语言才有的语法,例如函数、分支循环语句、变量等等,当然比起我们常见的编程语言,Awk相对比较简单。
宜轩
2022/12/26
9.8K0
Tcpdump流量自动化测试下篇
接上一篇《Tcpdump流量自动化测试上篇》讲到通过自动化的方式获取到Pcap文件,今天来讲讲怎么用Wireshark来自动分析统计Pcap包中指定的流量。
岛哥的质量效能笔记
2021/08/18
2K0
Tcpdump流量自动化测试下篇
linux19-详说linux文本处理(二)
继续总结一下linux 的文本处理。包括但不限于awk, sed, paste,split,grep....
北野茶缸子
2022/05/19
8770
linux19-详说linux文本处理(二)
typecho将Gravatar头像改为QQ头像
找到主题下的comments.php文件,查找关键字gravatar 我们会发现下面一段语句
逍遥子大表哥
2021/12/17
5.3K0
typecho将Gravatar头像改为QQ头像

相似问题

将awk的字段分隔符更改为换行符

38

Awk字段分隔符

42

awk字段分隔符\[ \]

22

用AWK将逗号更改为指向

23

Awk字段分隔符行为

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档