文件格式:使用 awk NR 变量造成混乱

2024-01-09

我是 awk 编程新手,对 NR 变量的使用有点困惑..

我的代码是...

awk 'BEGIN {k=NR;}{printf("%s %s %s %s\n",$k,$(k+1),$(k+2),$(k+3))}' auth_data

$ 猫 auth_data

6262 6530 6661 3162 6364 6264 6561 3430 3033 3332 6536 3139 6230 6261 61
30 3637 0A00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 

Output :

6262 6530 6661 3162 6364 6264 6561 3430 3033 3332 6536 3139 6230 6261 6130
3637 0A00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000  6262 6530 6661

但我想要的是输出应该采用这种格式:

  6262 6530 6661 3162 6364 6264 6561 3430
  3033 3332 6536 3139 6230 6261 6130 3637 
  0A00 0000 0000 0000 0000 0000 0000 0000
  0000 0000 0000 0000 0000 0000 0000 0000 

我猜你要找的是 NF,而不是 NR。

来自联机帮助页:

NR 迄今为止看到的输入记录总数。

NR 是实际的行号,但在这个问题中,您想在字段 idx 而不是行上做一些技巧。

另外,我认为您的输入数据应该位于文件“auth_data”中的一行,对吧?

如果是这样,你可以尝试

awk '{for(i=1;i<=NF;i++)if(i%8==0)print $i;else printf $i" "}' auth_data

检查下面的测试:

kent$  echo "6262 6530 6661 3162 6364 6264 6561 3430 3033 3332 6536 3139 6230 6261 6130 3637 0A00 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000"|\
awk '{for(i=1;i<=NF;i++)if(i%8==0)print $i;else printf $i" "}'
    6262 6530 6661 3162 6364 6264 6561 3430
    3033 3332 6536 3139 6230 6261 6130 3637
    0A00 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000

回到问题,如果你只想进行格式化,xargs 就足够了。见下文:

kent$  echo "6262 6530 6661 3162 6364 6264 6561 3430 3033\
        3332 6536 3139 6230 6261\
        6130 3637 0A00 0000 0000 \
        0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000"|xargs -n8

output:

6262 6530 6661 3162 6364 6264 6561 3430
3033 3332 6536 3139 6230 6261 6130 3637
0A00 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000

you can cat yourFile|xargs -n8 or xargs -n8 -a yourfile

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

文件格式:使用 awk NR 变量造成混乱 的相关文章

  • 有没有办法改变vim的默认模式

    有谁知道如何更改vim的默认模式 它的默认模式是命令模式 但是我可以将其更改为插入模式吗 只需将以下行添加到您的 vimrc 中 start Vim s default mode will be changed to Insert mode
  • bash.sh 运行 cron 的权限被拒绝

    如何在这里使用 bash 脚本运行 cron 我做了如下操作 这里有错误 我想知道如何在 ubuntu 中做到这一点 我现在对它感到震惊 bash sh 文件 bin bash cd var www Controller usr bin p
  • 在 shell 脚本中将脚本目录更改为用户的 homedir

    在我的 bash 脚本中 我需要将当前目录更改为用户的主目录 如果我想更改为用户的foo主目录 从命令行我可以执行以下操作 cd foo 效果很好 但是当我从script它告诉我 bar sh line 4 cd foo No such f
  • 查找当前打开的文件句柄数(不是 lsof )

    在 NIX系统上 有没有办法找出当前正在运行的进程中有多少个打开的文件句柄 我正在从正在运行的进程中寻找在 C 中使用的 API 或公式 在某些系统上 见下文 您可以在 proc pid fd 中对它们进行计数 如果不属于其中之一 请参阅下
  • gnutls_handshake() 失败:握手失败 GIT

    一切都工作正常 但突然我收到错误 致命 无法访问 https 电子邮件受保护 cdn cgi l email protection name repo name git gnutls handshake 失败 握手失败 我在我的计算机和 E
  • 使用 xargs 时如何获取退出代码(并行)

    我制作了一个用于启动并行 rsync 进程的脚本 bin bash LIST 1 DEST DIR 2 RSYNC OPTS 3 echo rsyncing From SRC DIR To DEST DIR RSYNC OPTS RSYNC
  • 在Linux中执行jar文件[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我创建了一个可执行的 Java jar 文件 也就是说 我将 java 程序正确打包到 jar 文件中 包括 META INF MANIFEST 文件
  • 我应该使用 AWK 或 SED 删除 CSV 文件中引号之间的逗号吗? (重击)

    我有一堆日常打印机登录CSV格式 我正在编写一个脚本来跟踪使用了多少纸张并将信息保存到数据库中 但我遇到了一个小问题 本质上 日志中的一些文档名称中包含逗号 全部用双引号引起来 并且由于它采用逗号分隔格式 所以我的代码搞乱了并将所有内容推到
  • git 可以知道你当前的分支是从哪个分支分支出来的吗?

    我想创建一个 git 别名 让我可以从其分支的原始分支同步我的分支 例如 如果我从
  • OS X - 输入“grails”命令后终端重置

    在我的 bash profile 中 我有以下几行 export GRAILS HOME usr share java grails export PATH PATH GRAILS HOME bin GRAILS HOME 是同一目录中 g
  • 使用 adb 从手机摄像头传输照片的脚本

    Story 我用手机摄像头拍照和录制视频 并将它们全部保存在我的内部存储 SD 卡上 我定期将它们备份到我的电脑上 因此我将这些相机照片保存在电脑存储中与手机存储同步 多年来 我一直通过以下方式将手机相机照片备份到电脑上 将手机插入电脑并允
  • 第一次如何配置postgresql?

    我刚刚安装了 postgresql 并在安装过程中指定了密码 x 当我尝试做的时候createdb并指定我收到消息的任何密码 createdb 无法连接到数据库 postgres 致命 用户密码身份验证失败 同样适用于createuser
  • pip 找不到满足要求的版本 django==2.2.1

    我刚刚将操作系统更改为 linux 并且想安装 django 但我无法安装最新版本的 django 我努力了 pip install django 但是它安装了 django 1 11 11 这不是我需要的 我还将我的 pip 升级到了 1
  • 在 Windows 下使用 linux 实用程序的最佳方法是什么? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Linux 实用程序 如 sed awk 和其他 shell 脚本功能 非常棒 但当我在 Windows 上进行开发并且无法使用其中任何一
  • 导出多个 LD_LIBRARY_PATH 的正确方法

    对于linux的使用 我是一个新手 根据有关我的项目的指南 我必须多次导出 LD LIBRARY PATH 并且我不确定是否不覆盖它们 Cupti Tensorflow CUDAit export LD LIBRARY PATH LD LI
  • 使用inotify监控文件

    我正在使用 inotify 来监视本地文件 例如使用 root temp inotify add watch fd root temp mask 删除该文件后 程序将被阻止read fd buf bufSize 功能 即使我创建一个新的 r
  • 从文件中删除包含非英语 (Ascii) 字符的行

    我有一个文本文件 其中包含来自不同语言的字符 例如 中文 拉丁文等 我想删除包含这些非英语字符的所有行 我想包含所有英文字符 a b 数字 0 9 和所有标点符号 我如何使用 awk 或 sed 等 unix 工具来完成此操作 Perl 支
  • 将 ASCII 字符转换为“”unicode 表示法的脚本

    我正在对 Linux 区域设置文件进行一些更改 usr share i18n locales like pt BR 并且需要格式化字符串 例如 d m Y H M 必须以 Unicode 指定 其中每个 在本例中为 ASCII 字符表示为
  • tcmalloc/jemalloc 和内存池之间有什么区别(以及选择的理由)?

    tcmalloc jemalloc是改进的内存分配器 还引入了内存池以更好地分配内存 那么它们之间有什么区别以及在我的应用中如何选择它们呢 这取决于您的程序的要求 如果您的程序有更多的动态内存分配 那么您 需要从可用的分配器中选择一个内存分
  • python 的 fcntl.flock 函数是否提供文件访问的线程级锁定?

    Python 的 fcnt 模块提供了一种名为 flock 1 的方法来证明文件锁定 其描述如下 对文件执行锁定操作op 描述符 fd 文件对象提供 fileno 方法被接受为 出色地 请参阅 Unix 手册集群 2 了解详情 在某些系统上

随机推荐

  • 程序退出后,使curses程序输出保留在终端回滚历史记录中

    我对诅咒很陌生 所以我正在尝试 python 中的一些不同的东西 我已经初始化了窗口并为窗口对象设置了scrollok 我可以添加字符串 并且滚动可以正常工作 这样 addstr 在窗口末尾不会出现任何错误 我想要的是在程序完成后能够在终端
  • IIS URL 重写 ASP

    我尽力扫描论坛寻求帮助 以制作 web config 来重写此类 url domain com default asp id 3 language 2 我希望这可以是 domain com en service where language
  • Angular2 中的动态模板“嵌入”

    我正在努力实现这样的目标 我有一个名为的模型类ObjectTypeA ObjectTypeB and ObjectTypeC 还有一个工厂ComponentFactory 根据传入的对象类型将创建不同的组件 ComponentFactory
  • 通过代码获取文件 tnsnames.ora 的位置

    我怎样才能获得该位置tnsnames ora在安装了 Oracle 客户端的机器上按代码编写文件 Windows 注册表项是否指示该文件的位置 几年前我也遇到过同样的问题 当时我必须支持 Oracle 9 和 10 因此代码只处理这些版本
  • 访问 R data.frame 中倒数第二个值的最佳方法是什么?

    假设我有一个名为 SLV 的 data frame 并且我应用了 tail 函数 我会得到这个 gt tail SLV SLV Open SLV High SLV Low SLV Close SLV Volume SLV Adjusted
  • 致命错误:脚本超出最大执行时间 30 秒

    我有一位客户收到与脚本超时相关的错误 我已经包含了下面的代码 但我认为问题是需要延长超时 这是我可以在代码中设置的内容 还是必须由网络托管服务商 GoDaddy 设置 致命错误 D hosting 123 html siteame wp c
  • mysql 仅当用户不存在时创建用户

    我想执行一个CREATE USER语句 但仅当用户尚不存在时 这样做的最好方法是什么 如果您要创建用户 则还需要创建授权 如果用户不存在 授权会隐式创建一个用户 这就是为什么我们鼓励您在创建授权时包含密码 以防万一它们不存在 看http d
  • EF Core:使用字典属性

    有没有办法用 Entity Framework Core 填充字典属性 出于性能原因 我们喜欢在应用程序而不是数据库中进行搜索 由于列表不能很好地扩展 我们喜欢使用字典 例如 简化示例 class Course public Diction
  • console.log 的替代品?

    我想知道是否有其他方法可以在不使用控制台消息的情况下向控制台写入内容 我的项目在完成构建之前删除了所有控制台语句 但在特殊情况下 我需要找到一种通过控制台向用户显示某些内容的方法 如果没有控制台语句 这是否可能 您只能通过 Console
  • Scala 递归理解只在空列表前面添加一次,为什么?

    类似于这篇文章here https stackoverflow com questions 41471322 for comprehension in scala with recursive call 我正在学习 Scala 函数式编程
  • 如何在struts 2的s:action标签中使用ignoreContextParams属性

    在Struts 2中 有一个
  • 在 python 中连接 .m3u8 中存在的文件

    我正在尝试在 python 中连接 m3u8 播放列表中存在的 ts 文件 有什么办法可以做到吗 如果是 请解释一下如何 提前致谢 这应该可行 我只在这个简短的脚本中添加了两条注释 因为我想它几乎是不言自明的 import shutil P
  • 如何在discord.py中使用on_raw_reaction_add?

    好吧 我有一个程序 一个票务系统 它以 JSON 格式记录工单创建消息 ID 以便在程序重新启动时可以继续检查是否添加了新的反应 但我发现该消息必须加载到机器人的缓存中 但一旦重新启动 它就不会存在 所以我发现on raw reaction
  • 强制转换规范的字符值无效

    我正在使用 SQLXMLBulkLoad SQLXMLBulkload 3 0 将数据插入 SQL 2005 我的数据表有以下列 objDataTable Columns Add TaskDateTime System Type GetTy
  • Objective-C:UIViewController 中出现的键盘隐藏的 UIScroller 和 UItextfields

    我需要帮助尝试在 UIViewController 中配置键盘 a 不要将鼠标悬停在两个 UITextfields 上 因此滚动条应该正确定位 b 当用户触摸背景时键盘消失 我还没有尝试过 b 但我正在尝试 a 并且我通过谷歌搜索得到的代码
  • [System.Collections.Generic.List[string]] 作为返回值

    我需要 想要退货 System Collections Generic List string 来自函数 但它正在转换为System Object 我有这个 function TestReturn returnList New Object
  • 删除 Vim 中除正则表达式匹配之外的所有内容

    我的具体案例是一个包含大量文本和 IPv4 地址的文本文档 我想删除除 IP 地址之外的所有内容 我可以用 vglobal寻找 0 9 1 3 3 0 9 1 3 并删除所有没有IP地址的行 但之后我只知道如何搜索整行并选择匹配的文本 有更
  • 在另一个 LINQ 查询中重用 LINQ 查询结果,而无需重新查询数据库

    我遇到的情况是 我的应用程序根据用户指定的过滤条件使用 PredicateBuilder 构建动态 LINQ 查询 旁白 查看此link http petemontgomery wordpress com 2011 02 10 a univ
  • 确定程序集的加载上下文

    给定一个加载的Assembly有没有办法 在代码中 确定它被加载到 3 个加载上下文中的哪一个 默认Load 加载自 or Neither In 苏珊 库克的 选择一个有约束力的上下文 https web archive org web 2
  • 文件格式:使用 awk NR 变量造成混乱

    我是 awk 编程新手 对 NR 变量的使用有点困惑 我的代码是 awk BEGIN k NR printf s s s s n k k 1 k 2 k 3 auth data 猫 auth data 6262 6530 6661 3162