35岁后如何避免职场危机?

基础文本操作法

手动创建/重定向

echo "张三,25,北京" >> data.csv
echo "李四,30,上海" >> data.csv
  • 说明> 创建新文件,>> 追加内容。

结合变量生成

name="王五"
age=28
city="广州"
echo "$name,$age,$city" >> data.csv

命令行工具处理

awk 格式化输出

# 将空格分隔的文本转为CSV
ls -l | awk 'NR>1 {print $9 "," $5}' > files.csv
  • 参数解析
    • NR>1:跳过表头行
    • $9$5:文件名和文件大小

sed 替换分隔符

# 将冒号分隔的 /etc/passwd 转为CSV
sed 's/:/,/g' /etc/passwd > users.csv

编程语言生成

Python脚本(推荐)

import csv
data = [
    ["姓名", "年龄", "城市"],
    ["张三", 25, "北京"],
    ["李四", 30, "上海"]
]
with open("data.csv", "w", newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerows(data)
  • 优势:自动处理逗号/换行符转义(如字段含逗号会添加引号)。

Bash循环生成

#!/bin/bash
headers=("产品" "价格" "库存")
items=("手机" "5000" "100" "笔记本" "8000" "50")
{
  echo ${headers[@]} | tr ' ' ','
  for ((i=0; i<${#items[@]}; i+=3)); do
    echo "${items[i]},${items[i+1]},${items[i+2]}"
  done
} > products.csv

数据库导出CSV

SQLite 导出

sqlite3 mydb.db -csv "SELECT * FROM users;" > users.csv

MySQL 导出

SELECT * FROM sales
INTO OUTFILE '/var/lib/mysql/sales.csv'
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
  • 权限要求:MySQL用户需有 FILE 权限。

特殊字符处理技巧

当数据包含逗号或换行符时:

  • 用双引号包裹字段echo '"带逗号,的文本",100' >> data.csv
  • Python的csv模块:自动处理特殊字符
  • 避免编码问题:统一使用 UTF-8 编码

验证与查看CSV

# 查看前5行
head -n 5 data.csv
# 检查文件格式
file -i data.csv  # 输出应为:data.csv: text/plain; charset=utf-8

应用场景建议

方法 适用场景
手动重定向 快速生成简单数据
awk/sed 处理现有文本的格式转换
Python脚本 复杂数据或需要自动转义的情况
数据库导出 直接从数据库提取数据

注意事项

  1. 权限问题:确保对目标目录有写入权限(使用 chmodsudo)。
  2. Windows兼容性:在Linux生成CSV时,换行符为 \n(Windows默认 \r\n),可用 unix2dos 转换。
  3. 大文件处理:超大数据集建议用 awk 或编程语言,避免内存溢出。

引用说明基于Linux核心工具(GNU Bash, awk, sed)、Python官方文档及数据库管理最佳实践整理,具体命令参数可通过 man [命令](如 man awk)或查阅 Python CSV模块文档 进一步验证。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4528.html

(0)
酷番叔酷番叔
上一篇 2025年6月15日 02:55
下一篇 2025年6月15日 03:19

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信