Unix 单行交换/调换多个文本文件中的两行?

2023-11-26

我希望使用 sed 或 awk 等 UNIX 工具根据多个文本文件中的行号交换或转置行对(例如,交换第 10 行和第 15 行的位置)。

例如,我相信这个 sed 命令应该在单个文件中交换第 14 行和第 26 行:

sed -n '14p' infile_name > outfile_name
sed -n '26p' infile_name >> outfile_name

如何扩展它以处理多个文件?欢迎任何单行解决方案。


如果你想编辑一个文件,你可以使用ed,标准编辑器。你的任务相当简单ed:

printf '%s\n' 14m26 26-m14- w q | ed -s file

它是如何工作的?

  • 14m26 tells ed将第 #14 行移到第 #26 行之后
  • 26-m14- tells ed获取第 #26 行之前的行(这是您原来的第 #26 行)并将其移到第 #14 行之前的行之后(这是您的第 #14 行原来所在的位置)
  • w tells ed写入文件
  • q tells ed退出。

如果您的数字位于变量中,您可以执行以下操作:

linea=14
lineb=26
{
    printf '%dm%d\n' "$linea" "$lineb"
    printf '%d-m%d-\n' "$lineb" "$linea"
    printf '%s\n' w q
} | ed -s file

或类似的东西。确保linea<lineb.

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

Unix 单行交换/调换多个文本文件中的两行? 的相关文章

随机推荐

  • 我想通过蓝牙设备强制打开键盘

    我有一个蓝牙条形码设备 如果将蓝牙设备连接到 iPhone 我无法使用 iPhone 键盘写任何内容 您已经知道iPhone键盘不会显示 因为蓝牙设备已识别键盘 但 当 iPhone 连接蓝牙设备时 我必须通过键盘在文本框中写入一些内容 请
  • 如何在 Windows 上正确地将拉丁字符打印到 C++ 控制台?

    我在用 C 将法语字符写入控制台时遇到问题 该字符串是从文件中加载的std ifstream and std getline然后使用打印到控制台std cout 以下是该字符串在文件中的内容 该链对应于代码 TEST CODE 并且与语言环
  • 为什么 Ruby 只允许某些运算符重载

    在 Ruby 中 与许多其他面向对象编程语言一样 运算符是可重载的 但是 只有某些字符运算符可以重载 此列表可能不完整 但以下是一些不能重载的运算符 not and or 吉姆 韦里奇
  • 如何将 PHP 的内存限制增加到 2GB 以上?

    我在增加 PHP 作为 Apache 模块的内存限制时遇到问题 如果我将以下指令放入 Apache 配置中 则可以正常工作 php value memory limit 1 99G 但是超过2GB就不行了 它把这个值恢复到128MB 这里有
  • Google Plus API 和照片?

    据我了解 没有官方的 G API 用于从相册中获取照片 但我已经弄清楚了hereGoogle Plus 在内部使用 Picasa 我的问题是 是否可以仅通过 G API Picasa userId 找出 如果是 如果我只有 Google P
  • XCTest 中的 IOS -NSRunLoop:如何让运行循环在单元测试中工作?

    好的 我环顾四周 没有找到我的问题的确切答案 我正在尝试在单元测试 而不是主要运行 中测试超时处理程序 问题似乎在于 NSRunLoop mainRunLoop 单元测试中的运行方式与标准运行中的运行方式不同 我以这种方式进行超时 NSTi
  • macOS/swift 使用 AVCaptureSession 捕获音频

    我目前正在尝试在我的 Mac 上实现一个简单的录音工具 由于我需要内存中的原始音频缓冲区 因此我无法使用 AVAudioRecorder 它只会将录音写入文件 我的方法是创建 AVCaptureSession 输入 麦克风 和输出 AVCa
  • 如何使用 Team Build 2010 部署 Windows 服务项目

    我有一个VS2010解决方案 其中包括几个Windows服务项目 我需要将这些服务部署为 Team Build 2010 中构建的一部分 并且 Windows 服务必须部署在多台 Windows Server 计算机上 我怎样才能做到这一点
  • 如何从名称的 string[] 创建动态 LINQ 选择投影函数?

    使用 C 有没有办法指定投影函数的属性名称LINQselect 方法 从数组中 public class Album public int Id get set public string Name get set public short
  • 如何突出显示 JLabel 的一部分?

    在任何人建议 HTML 之前 我稍后会解释为什么这里不选择 HTML 我有一个表 其中包含一列 其中包含文本单元格 我需要能够突出显示每个单元格中的一些文本 例如 如果单元格包含 cat foo dog 我可能想突出显示 foo 我当前的方
  • 设备未收到 Firebase 云消息通知

    我在使用 FireBase 云消息传递时遇到问题 我从设备获取令牌并通过 Google Firebase 通知控制台发送通知测试 但是 通知从未记录或推送到 Android 虚拟设备 FCM 的文档几乎与我下面的代码完全相同 几乎没有其他内
  • 如何解析字典字符串?

    我正在尝试将字符串转换为字典dict函数 像这样 import json p id 12589456 d dict p print d id 但我收到以下错误 ValueError dictionary update sequence el
  • Datatables 1.10 通过 jquery“检查全部”

    我知道这可能看起来很原始 但我一整天都在尝试实现它 也许是因为我无法完全理解如何使用 API 我正在使用 DataTables 1 10 0 我有一个带分页的表功能 每一行都有一个复选框 我需要一个 检查所有按钮 来检查所有页面中的所有复选
  • 通过参数列表过滤 SQL 查询

    我有一个查询 我想返回与值列表关联的所有行 您可以非常简单地将其写为 select from TableA where ColumnB in 1 2 3 5 我可以在 C 中生成此查询并执行它 然而这显然不太理想 因为它不使用参数 在尝试缓
  • 从片段在我的工具栏上设置副标题

    我在从片段设置工具栏中的副标题时遇到一些问题 我在 setSubTitle 处不断收到空指针异常 Override public void onActivityCreated Bundle savedInstanceState super
  • 如何一起使用 mongoose unique、skip 和 limit

    我需要使用skip and limit用于分页 以及distinct因为不返回相等的值 If i use MyModel find distinct blaster function err results res render index
  • 选择控制设置初始值

    我们知道 随着InputSelect我们不能同时使用 bind value 和 onchange 但如果我们使用后者 与select反而InputSelect 我们如何设置与第一个不同的初始值 例如 在此示例中设置为 2018 年 变量的值
  • 根据另一个指定拒绝列表条件的 DataFrame 过滤 Spark DataFrame

    我有一个largeDataFrame 多列和数十亿行 和smallDataFrame 单列和 10 000 行 我想过滤所有行largeDataFrame每当some identifier栏目中的largeDataFrame匹配中的某一行s
  • 使用自定义键对 python 中的元组进行排序

    你好 我正在尝试以自定义方式对元组列表进行排序 例如 lt 2 4 4 5 5 2 必须排序 lt 5 2 2 4 4 5 Rules 如果 a 1 b 0 则 b 元组大于 a 元组 如果 a 0 b 1 a 元组大于 b 元组 我已经实
  • Unix 单行交换/调换多个文本文件中的两行?

    我希望使用 sed 或 awk 等 UNIX 工具根据多个文本文件中的行号交换或转置行对 例如 交换第 10 行和第 15 行的位置 例如 我相信这个 sed 命令应该在单个文件中交换第 14 行和第 26 行 sed n 14p infi