找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 2741|回复: 21

文件求助,把一个文件的第2行,写到同一文件第3行尾

[复制链接]
发表于 2019-1-31 13:33 | 显示全部楼层 |阅读模式
本帖最后由 aximpda 于 2019-1-31 13:49 编辑

如内容


abdk236
shanghai27b
openwrt41

改写为
abdk236
openwrt41shanghai27b   #第2行追加到第3行尾


不知道如何写

文件 为 /mnt/sda1/txfc
我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-1-31 13:36 | 显示全部楼层
什么编程语言?

点评

linux openwrt  详情 回复 发表于 2019-1-31 13:36

评分

参与人数 1恩山币 +2 收起 理由
aximpda + 2 强大的恩山!(以下重复1万次)

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2019-1-31 13:36 | 显示全部楼层
本帖最后由 aximpda 于 2019-1-31 13:37 编辑
ysc3839 发表于 2019-1-31 13:36
什么编程语言?

linux  openwrt  脚本

点评

纯 shell 脚本应该无法实现,用 awk 可以。 awk 'NR==2 {L=$0} NR==3 {$0=$0L} 1' file.txt  详情 回复 发表于 2019-1-31 13:58
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-1-31 13:41 | 显示全部楼层
改写后第二行变成openwrt41openwrt41,还是openwrt41shanghai27b

点评

就是拼接一行到另一行行尾  详情 回复 发表于 2019-1-31 13:44
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2019-1-31 13:44 | 显示全部楼层
本帖最后由 aximpda 于 2019-1-31 13:45 编辑
cecial 发表于 2019-1-31 13:41
改写后第二行变成openwrt41openwrt41,还是openwrt41shanghai27b

就是拼接一行到另一行行尾openwrt41shanghai27b

点评

假设文件ccc包含你的内容 set l2 = `sed -n '2p' ccc` set l3 = `sed -n '3p' ccc` cat ccc | sed '2,3d' | sed '1a'$l3$l2'' 顺序执行看看,我linux下面csh可以  详情 回复 发表于 2019-1-31 13:53
我求助帖没有写好,是拼接  详情 回复 发表于 2019-1-31 13:50
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2019-1-31 13:50 | 显示全部楼层
aximpda 发表于 2019-1-31 13:44
就是拼接一行到另一行行尾openwrt41shanghai27b

我求助帖没有写好,是拼接
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-1-31 13:53 | 显示全部楼层
aximpda 发表于 2019-1-31 13:44
就是拼接一行到另一行行尾openwrt41shanghai27b

假设文件ccc包含你的内容
set l2 = `sed -n '2p' ccc`
set l3 = `sed -n '3p' ccc`
cat ccc | sed '2,3d' | sed '1a'$l3$l2''

顺序执行看看,我linux下面csh可以

点评

#!/bin/sh set l2 = `sed -n '2p' /mnt/sda1/opt/lcd4linux/tmp/weather` set l3 = `sed -n '3p' /mnt/sda1/opt/lcd4linux/tmp/weath  详情 回复 发表于 2019-1-31 14:07

评分

参与人数 1恩山币 +2 收起 理由
aximpda + 2 强大的恩山!(以下重复1万次)

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2019-1-31 13:55 | 显示全部楼层
谢谢,我试一试
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-1-31 13:58 | 显示全部楼层
本帖最后由 ysc3839 于 2019-1-31 14:01 编辑
aximpda 发表于 2019-1-31 13:36
linux  openwrt  脚本

纯 shell 脚本应该无法实现,用 awk 可以。
  1. awk 'NR==2 {L=$0} NR==3 {$0=$0L} 1' file.txt
复制代码

输入
  1. abdk236
  2. shanghai27b
  3. openwrt41
复制代码

输出
  1. abdk236
  2. shanghai27b
  3. openwrt41shanghai27b
复制代码

点评

我试在屏幕上可以,但写脚本后没有变化  详情 回复 发表于 2019-1-31 14:19
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2019-1-31 14:07 | 显示全部楼层
cecial 发表于 2019-1-31 13:53
假设文件ccc包含你的内容
set l2 = `sed -n '2p' ccc`
set l3 = `sed -n '3p' ccc`

#!/bin/sh


               
                        set l2 = `sed -n '2p' /mnt/sda1/opt/lcd4linux/tmp/weather`
                            set l3 = `sed -n '3p' /mnt/sda1/opt/lcd4linux/tmp/weather`
                               cat /mnt/sda1/opt/lcd4linux/tmp/weather | sed '2,3d' | sed '1a'$l3$l2''
执行后没有变化
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2019-1-31 14:19 | 显示全部楼层
ysc3839 发表于 2019-1-31 13:58
纯 shell 脚本应该无法实现,用 awk 可以。

输入

我试在屏幕上可以,但写脚本后没有变化

点评

最后再重定向到原文件就好了。  详情 回复 发表于 2019-1-31 14:43
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2019-1-31 14:21 | 显示全部楼层
本帖最后由 aximpda 于 2019-1-31 14:22 编辑

#!/bin/sh
                        #set l2 = `sed -n '2p' /mnt/sda1/txfc`
                            #set l3 = `sed -n '3p' /mnt/sda1/txfc`
                               #cat /mnt/sda1/txfc | sed '2,3d' | sed '1a'$l3$l2''

                                                                         cat /mnt/sda1/txfc   | awk 'NR==2 {L=$0} NR==3 {$0=$0L} 1'

#文件及路径/mnt/sda1/txfc
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2019-1-31 14:36 | 显示全部楼层
#!/bin/sh

cat /mnt/sda1/txfc   | awk 'NR==2 {L=$0} NR==3 {$0=$0L} 1'   

这样写  在终端上运行  cat /mnt/sda1/txfc   | awk 'NR==2 {L=$0} NR==3 {$0=$0L} 1'   可以看到结果,
但执行脚本文件没有改
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-1-31 14:43 | 显示全部楼层
本帖最后由 ysc3839 于 2019-1-31 14:44 编辑
aximpda 发表于 2019-1-31 14:19
我试在屏幕上可以,但写脚本后没有变化

最后再重定向到原文件就好了。
  1. file=/mnt/sda1/txfc
  2. awk 'NR==2 {L=$0} NR==3 {$0=$0L} 1' $file > $file
复制代码

评分

参与人数 1恩山币 -2 收起 理由
aximpda -2 强大的恩山!(以下重复1万次)

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2019-1-31 15:05 | 显示全部楼层
#!/bin/sh


               
                        #set l2 = `sed -n '2p' /mnt/sda1/txfc`
                            #set l3 = `sed -n '3p' /mnt/sda1/txfc`
                               #cat /mnt/sda1/txfc | sed '2,3d' | sed '1a'$l3$l2''

                                               file='/mnt/sda1/txfc'
                                                                     awk 'NR==2 {L=$0} NR==3 {$0=$0L} 1' $file > $file

执行后文件空了

点评

是我没测试。我搜索了一下,是不能直接重定向的,还没读完就会覆盖掉原来的内容。  详情 回复 发表于 2019-1-31 16:02
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-20 17:12

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表