首页 > 解决方案 > 使用另一个文本文件的单词列表顺序替换一个单词 - data_file

问题描述

在我的脑海中,我有:

阅读“original_file”,将第 3 行更改"ENTRY1"data_file. 写出来new_file1。读取“original_file”,将第 3 行更改"ENTRY1"data_file. 写出new_file2

重复整个data_file.

摘录/示例:

original_file:

    line1      {
    line2        "id": "b5902627-0ba0-40b6-8127-834a3ddd6c2c",
    line3        "name": "ENTRY1",
    line4        "auto": true,
    line5        "contexts": [],
    line6        "responses": [
    line7      {
    ------------

    data_file:(simply a word/number List)
    line1   AAA11
    line2   BBB12
    line3   CCC13
    ..100lines/Words..
    -------------

    *the First output/finished file would look like:
    newfile1:
    line1      {
    line2        "id": "b5902627-0ba0-40b6-8127-834a3ddd6c2c",
    line3        "name": "AAA11",
    line4        "auto": true,
    line5        "contexts": [],
    line6        "responses": [
    line7      {
    ------------
    and the Second:
    newfile2:
    line1      {
    line2        "id": "b5902627-0ba0-40b6-8127-834a3ddd6c2c",
    line3        "name": "BBB12",
    line4        "auto": true,
    line5        "contexts": [],
    line6        "responses": [
    line7      {
    ------------

..等等。

我一直在尝试使用 sed,比如

awk 'FNR==$n1{if((getline line < "data_file") > 0) fprint '/"id:"/' '/""/' line ; next}$n2' < newfile

和..作为shell脚本的开始..

#!/bin/bash
n1=3
n2=2
sed '$n1;$n2 data_file' original_file > newfile

任何帮助将不胜感激..我一直在尝试将SO上发现的各种技术结合在一起..一次一件事..学习如何替换..然后从第二个文件替换..但这超出了我的知识范围。再次感谢。我的 data_file 中有大约31,000LINES .. 所以这是必要的.. (自动化)。它是一次性的,但对其他人可能非常有用?

标签: regexawkgrepcat

解决方案


假设我们正在尝试更改某些 JSON 数据中的“名称”,并且新值将是纯字母数字(以便双引号正常工作):

#!/bin/bash

n=1
cat data_file | while read value; do
    jq <original_file >"newfile$n" ".name = \"$value\""
    ((n++))
done

推荐阅读