首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用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

复制
相关文章
【Android 逆向】ELF 文件格式 ( ELF 程序头入口大小 | ELF 程序头入口个数 | ELF 文件节区头入口大小 | ELF 文件节区头入口个数 | 字符表序号 )
ELF 文件头 第 42 ~ 43 字节 : ELF 程序头入口大小 ; 一般是 32 字节 ;
韩曙亮
2023/03/29
1K0
【Android 逆向】ELF 文件格式 ( ELF 程序头入口大小 | ELF 程序头入口个数 | ELF 文件节区头入口大小 | ELF 文件节区头入口个数 | 字符表序号 )
程序一定要从main函数开始运行吗?
每个目标文件都有好多个段,目标文件在被链接成可执行文件时,输入目标文件中的各个段如何被合并到输出文件?
程序员小猿
2021/01/19
1.3K0
程序一定要从main函数开始运行吗?
gcc -E 选项
-E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面. 例子用法: gcc -E hello.c > pianoapan.txt gcc -E hello.c | more 慢慢看吧,一个hello word 也要与处理成800行的代码
Java架构师必看
2021/03/22
9680
写一个操作系统_08 内核与C语言
我们开发用户应用程序的时候,有标准库可以用,最典型的就是GUN C库,标准库一般是系统调用的封装,表面上是通过标准库访问系统资源,实际上是通过系统调用实现的。Linux的系统调用一般是先往eax寄存器写入系统调用号,然后通过0x80中断来实现。中断向量号为0x80称为系统中断门,更多的中断参考中断描述符表。
changan
2020/11/04
8280
动态链接的步骤与实现
我们知道动态链接器本身也是一个共享对象,但是事实上它有一些特殊性。对于普通共享对象文件来说,它的重定位工作由动态链接器来完成。他也可以依赖其他共享对象,其中的被依赖共享对象由动态链接器负责链接和装载。可是对于动态链接器来说,它的重定位工作由谁来完成?它是否可以依赖于其他共享对象?
233333
2019/05/25
1.4K0
只有170字节,最小的64位Hello World程序这样写成
机器之心转载 作者:CJ Ting 最简单的 C 语言 Hello World 程序,底层到底发生了什么?如何编写出最小的 64 位 Hello World 程序? Hello World 应该是每一位程序员的启蒙程序,出自于 Brian Kernighan 和 Dennis Ritchie 的一代经典著作 The C Programming Language。 // hello.c#include <stdio.h>int main() { printf("hello, world\n"
机器之心
2023/03/29
5450
只有170字节,最小的64位Hello World程序这样写成
BUUCTF 刷题笔记——PWN 2
先验文件,本题文件为 32 为可执行文件,保护约等于没开。值得注意的是,该文件又是静态链接,因此又可以直接调用一些未被调用过的函数来解题,比如老朋友 mprotect() 函数。
h-t-m
2023/03/10
1.5K0
BUUCTF 刷题笔记——PWN 2
吴章金: 如何创建一个*可执行*的共享库
license: "cc-by-nc-nd-4.0" description: "本文手把手指导如何创建一个可以执行的共享目标文件"
Linux阅码场
2019/11/10
1.2K0
Linux共享库、静态库、动态库详解
1. 介绍 使用GNU的工具我们如何在Linux下创建自己的程序函数库?一个“程序函数库”简单的说就是一个文件包含了一些编译好的代码和数据,这些编译好的代码和数据可以在事后供其他的程
sunsky
2020/08/20
9K0
Linux共享库、静态库、动态库详解
含大量图文解析及例程 | Linux下的ELF文件、链接、加载与库(中)
可执行文件的装载 进程和装载的基本概念的介绍 程序(可执行文件)和进程的区别 程序是静态的概念,它就是躺在磁盘里的一个文件。 进程是动态的概念,是动态运行起来的程序。 现代操作系统如何装载可执行文件 给进程分配独立的虚拟地址空间 将可执行文件映射到进程的虚拟地址空间(mmap) 将CPU指令寄存器设置到程序的入口地址,开始执行 可执行文件在装载的过程中实际上如我们所说的那样是映射的虚拟地址空间,所以可执行文件通常被叫做映像文件(或者Image文件)。 可执行ELF文件的两种视角 可执行ELF格式具有不寻常的
刘盼
2022/08/26
3.4K0
含大量图文解析及例程 | Linux下的ELF文件、链接、加载与库(中)
ROP的基本原理和实战教学,看这一篇就够了!
ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防御(比如内存不可执行和代码签名等)。通过上一篇文章栈溢出漏洞原理详解与利用,我们可以发现栈溢出的控制点是ret处,那么ROP的核心思想就是利用以ret结尾的指令序列把栈中的应该返回EIP的地址更改成我们需要的值,从而控制程序的执行流程。
Java程序猿
2023/02/21
3.4K0
linux ldd命令源代码,Linux中ldd命令的用法详解[通俗易懂]
Linux中ldd命令主要用于查看程式运行所需的共享库,那么ldd命令具体要如何使用呢?下面小编就给大家介绍下Linux下ldd命令的使用方法,感兴趣的朋友一起来学习下吧。
全栈程序员站长
2022/08/23
3.5K0
linux ldd命令源代码,Linux中ldd命令的用法详解[通俗易懂]
实战操作系统 loader 编写(下) -- 进军内核
上一篇文章中,我们结合此前已经介绍过的一系列知识,成功的将内核载入内存并进入到了保护模式中。 实战操作系统 loader 编写(上) — 进入保护模式
用户3147702
2022/06/27
4090
实战操作系统 loader 编写(下) -- 进军内核
linux 编译汇编,linux下的汇编教程
第一部分 Linux下ARM汇编语法尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针、设置页表、操作 ARM的协处理器等。初始化完成后就可以跳转到C代码执行。需要注意的是,GNU的汇编器遵循AT&T的汇编语法,可以从GNU的站点(www.gnu.org)上下载有关规范。
全栈程序员站长
2022/06/28
3.5K0
Linux命令(65)——ld命令
ld命令是二进制工具集GNU Binutils的一员,是GNU链接器,用于将目标文件与库链接为可执行程序或库文件。
恋喵大鲤鱼
2019/04/18
17.8K0
nox&amp;CSAW部分pwn题解
暑假的时候遇到了一群一起学习安全的小伙伴,在他们的诱劝下,开始接触国外的CTF比赛,作为最菜的pwn选手就试着先打两场比赛试试水,结果发现国外比赛真有意思哎嘿。
安恒网络空间安全讲武堂
2018/10/25
1K0
写一个操作系统_14 C 链接与系统调用
链接可以指定最终生成的可执行文件的起始虚拟地址,我们 指定 内核加载到 0x1500的地方,内核初始化的时候跳转内核要跳转到这个地方。
changan
2020/11/04
4660
动态链接的相关结构
在了解了共享对象的绝对地址的引用问题后,我们基本上对动态链接的原理有了初步的了解,接下来的问题是整个动态链接具体的实现过程了。动态链接在不同的系统上有不同的实现方式。ELF的动态链接的实现方式会比PE的简单一点,在这里我们先介绍ELF的动态链接过程在LINUX下的实现,最后我们会专门的章节中介绍PE在Windows下的动态链接过程和它们的区别
233333
2019/05/25
1.7K0
nox&CSAW部分pwn题解
暑假的时候遇到了一群一起学习安全的小伙伴,在他们的诱劝下,开始接触国外的CTF比赛,作为最菜的pwn选手就试着先打两场比赛试试水,结果发现国外比赛真有意思哎嘿。
安恒网络空间安全讲武堂
2019/09/29
1.1K0
nox&CSAW部分pwn题解
ELF文件的加载过程(load_elf_binary函数详解)--Linux进程的管理与调度(十三)
一种是固定的、静态的连接,就是把需要用到的库函数的目标代码(二进制)代码从程序库中抽取出来,链接进应用软件的目标映像中;
233333
2018/10/09
8.5K0
ELF文件的加载过程(load_elf_binary函数详解)--Linux进程的管理与调度(十三)

相似问题

从加载器跳转到ELF的入口点

156

ELF入口点是否与通常的0x80*?为什么要这么做?

21

更改入口点“主”

25

入口点地址与原入口点有什么不同?

10

链接器(%ld) ELF问题

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档