【发布时间】:2020-05-24 23:14:37
【问题描述】:
您好,我需要一些 bash 脚本方面的帮助。
我需要将以下行插入文件中特定行号
su - test -c '$HOME/scripts/auto start' >> /home/test/auto_start.`date +%h_%d_%y`.log 2>&1
在更大的问题陈述中,行要插入到指定的行号&到文件中,都是动态的&需要从 csv 文件中获取。
csv 文件如下所示:
$ cat test_file.csv
TARGET_NODE,TARGET_FILE,TARGET_LINE,NEW_LINE
10.10.10.10,test_file.csv,2,su - test -c '$HOME/scripts/auto start' >> /home/test/auto_start.`date +%h_%d_%y`.log 2>&1
已尝试以多种方式使用 sed,但都失败了。由于系统限制,我们不能使用python。
简单的测试方法:
seq 4|sed 's/<LINE_NUMBER>/<NEW_TEXT>/'
所以我们尝试使用:
seq 4|sed 's/2/'su - test -c '$HOME/scripts/auto start' >> /home/test/auto_start.`date +%h_%d_%y`.log 2>&1'/'
【问题讨论】:
-
“test_file.csv”暗示它应该更新自己(它在第 2 行引用自己)。如果你这样做,列结构将被破坏(test_file.csv 有 TARGET_NODE 列)。您能澄清一下您要做什么吗?
-
目标节点 10.10.10.10 上的 test_file.csv 与本地文件不同。即使文件名相同,但它们位于不同的节点上。
-
您必须澄清(在问题中)如何访问远程文件。否则,本地的 sed 将只能访问本地的 test_file.csv