【软件工具】将文件最后一行的内容剪切下来,与另一个文件的第一行拼接起来,不需要分隔符连接

将文件最后一行的内容剪切下来,与另一个文件的第一行拼接起来,不需要分隔符连接


要将一个文件的最后一行内容剪切下来,并与另一个文件的第一行内容拼接在一起,可以使用以下方法:

一、

在 Linux/MacOS 上使用命令行工具

假设文件 file1.txt 是源文件,file2.txt 是目标文件:

  1. 获取 file1.txt 的最后一行并删除它:

    last_line=$(tail -n 1 file1.txt)
    sed -i '' -e '$d' file1.txt
    
  2. 读取 file2.txt 的第一行并拼接 last_line

    first_line=$(head -n 1 file2.txt)
    combined_line="${last_line}${first_line}"
    
  3. 将拼接结果写入 file2.txt 的第一行:

    sed -i '' -e "1s/.*/${combined_line}/" file2.txt
    

这个命令会将 file1.txt 的最后一行内容剪切下来,并将它拼接到 file2.txt 的第一行上。

在 Windows 上使用 PowerShell

假设文件 file1.txt 是源文件,file2.txt 是目标文件:

  1. 读取 file1.txt 的最后一行并删除它:

    $lines = Get-Content -Path "file1.txt"
    $lastLine = $lines[-1]
    $lines[0..($lines.Count-2)] | Set-Content -Path "file1.txt"
    
  2. 读取 file2.txt 的第一行并拼接 lastLine

    $firstLine = Get-Content -Path "file2.txt" -TotalCount 1
    $combinedLine = "${lastLine}${firstLine}"
    
  3. 将拼接结果写入 file2.txt 的第一行:

    $remainingLines = Get-Content -Path "file2.txt" | Select-Object -Skip 1
    Set-Content -Path "file2.txt" -Value $combinedLine
    $remainingLines | Add-Content -Path "file2.txt"
    

这个脚本将 file1.txt 的最后一行内容与 file2.txt 的第一行内容拼接,并更新 file2.txt

二、

出现 Argument list too long 错误,可能是因为 sed 命令处理的文件内容太大,或者是因为某个操作导致参数列表长度超出限制。你可以尝试使用其他方法来解决这个问题,避免直接将整个文件内容传递给命令。

以下是如何使用逐行处理的方法来实现你想要的操作,而避免传递过长的参数列表:

使用 awksed 组合处理

# 假设 file1.txt 是源文件,file2.txt 是目标文件

# 1. 提取 file1.txt 的最后一行并删除它
last_line=$(awk 'END{print}' file1.txt)
awk 'NR>1{print prev} {prev=$0}' file1.txt > temp_file1.txt && mv temp_file1.txt file1.txt

# 2. 提取 file2.txt 的第一行
first_line=$(head -n 1 file2.txt)

# 3. 拼接最后一行和第一行
combined_line="${last_line}${first_line}"

# 4. 更新 file2.txt 的第一行
sed -i "1s/.*/${combined_line}/" file2.txt

使用临时文件处理

  1. 提取 file1.txt 的最后一行并删除它:

    last_line=$(tail -n 1 file1.txt)
    head -n -1 file1.txt > temp_file && mv temp_file file1.txt
    
  2. 读取 file2.txt 的第一行并拼接 last_line

    first_line=$(head -n 1 file2.txt)
    combined_line="${last_line}${first_line}"
    
  3. 将拼接结果写入 file2.txt 的第一行:

    echo "${combined_line}" > temp_file
    tail -n +2 file2.txt >> temp_file
    mv temp_file file2.txt
    

这些方法通过避免将整个文件内容作为参数传递给 sed,从而避免了 Argument list too long 错误。这些步骤会在不损坏文件内容的前提下完成你需要的操作。

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿寻寻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值