使用sed修改最后一行数据

本文介绍了一种将独立的JSON对象转换为数组格式的方法,通过在每个元素后添加逗号并处理最后一行,实现了数据格式的统一,便于后续的数据处理和分析。

需求

原始数据文件内容如下:

{"name":"vincent","age":"12"}
{"name": "tom", "age": "12"}
{"name": "jerry", "age": "13"}
{"name": "catlina", "age": "22"}
{"name": "sofia", "age": "14"}

希望变成下面的格式:

[{"name":"vincent","age":"12"},
{"name": "tom", "age": "12"},
{"name": "jerry", "age": "13"},
{"name": "catlina", "age": "22"},
{"name": "sofia", "age": "14"}]

思路

除了最后一行,每一行后面都添加一个,,因此需要先把最后一样获取出来,然后处理每一行。

echo -n "[" >> $file"-format" # 不换行输出'['到文件
tail=`tail -1 $file`"]"              # 获取最后一行
head -n -1 $file | sed 's/$/&,/g' >> $file"-format" # 每一行结尾添加‘,’
echo $tail >> $file"-format"

head -n -1 file表示输出除了最后一行的数据。

### **使用 `sed` 修改文件前10行数据** `sed`(Stream Editor)是 Linux 中强大的文本处理工具,可用于**按行编辑文件**。以下是修改文件前10行数据的几种常用方法: --- ## **1. 修改前10行的指定内容** ### **(1) 替换前10行的某字符串** ```sh sed '1,10s/old_text/new_text/' input.txt ``` - **`1,10`**:操作范围(第1到第10行)。 - **`s/old_text/new_text/`**:替换匹配的文本。 **示例**:将 `data.txt` 前10行的 `apple` 替换为 `orange` ```sh sed '1,10s/apple/orange/' data.txt ``` ### **(2) 仅打印修改后的前10行(不修改原文件)** ```sh sed -n '1,10p' input.txt | sed 's/old/new/' ``` - **`-n`**:禁止默认输出。 - **`1,10p`**:仅打印前10行。 --- ## **2. 删除前10行的指定内容** ### **(1) 删除前10行的空行** ```sh sed '1,10/^$/d' input.txt ``` - **`/^$/`**:匹配空行。 - **`d`**:删除匹配的行。 ### **(2) 删除前10行的注释行(以 `#` 开头)** ```sh sed '1,10/^#/d' config.txt ``` --- ## **3. 在前10行插入/追加内容** ### **(1) 在第5行前插入一行** ```sh sed '5i\This is a new line' input.txt ``` - **`5i`**:在第5行**前**插入。 ### **(2) 在前10行每行后追加内容** ```sh sed '1,10a\---END---' input.txt ``` - **`a\`**:在匹配行**后**追加。 --- ## **4. 直接修改文件(原地编辑)** 使用 `-i` 选项直接修改原文件(谨慎操作!): ```sh sed -i '1,10s/old/new/' file.txt ``` - **`-i.bak`**:备份原文件(生成 `file.txt.bak`)。 ```sh sed -i.bak '1,10s/old/new/' file.txt ``` --- ## **5. 复杂示例** ### **(1) 前10行首尾添加标记** ```sh sed '1,10s/^/START: /; 1,10s/$/ :END/' file.txt ``` - **`^`**:行首。 - **`$`**:行尾。 ### **(2) 仅修改匹配特定模式的前10行** ```sh sed '1,10{/pattern/s/old/new/}' file.txt ``` - **`{ }`**:对匹配 `pattern` 的行执行操作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值