【发布时间】:2009-09-02 12:44:13
【问题描述】:
我有一个包含由 分号“;” 分隔的文本数据的文件。我想分离数据,换句话说,在 ; 发生的地方分割并将数据写入输出文件。 bash脚本有什么办法吗?
【问题讨论】:
我有一个包含由 分号“;” 分隔的文本数据的文件。我想分离数据,换句话说,在 ; 发生的地方分割并将数据写入输出文件。 bash脚本有什么办法吗?
【问题讨论】:
您很可能希望 awk 将 FS(字段分隔变量)设置为 ';'。
Awk 是基于列的数据的首选工具(有些人喜欢 Perl,但我不喜欢)。
echo '1;2;3;4;5
6;7;8;9;10' | awk -F\; '{print $3" "$5}'
输出:
3 5
8 10
如果你只是想把分号变成换行符:
echo '1;2;3;4;5
6;7;8;9;10' | sed 's/;/\n/g'
在不同的行上输出数字 1 到 10。
显然这些命令只是使用我的测试数据。如果您想在自己的文件中使用它们,请使用以下内容:
sed 's/;/\n/g' <input_file >output_file
【讨论】:
#!/bin/bash
while read -d ';' ITEM; do
echo "$ITEM"
done
【讨论】:
试试:
cat original_file.txt | cut -d";" -f1 > new_file.txt
这会将每一行拆分为由“;”分隔的字段并选择第一个字段 (-f1)。 您可以使用 -f1、-f2、... 访问其他字段,也可以使用 -f1-2、-f2- 访问多个字段。
【讨论】:
您可以通过 'tr' 命令将一个字符转换为另一个字符。
猫输入.txt | tr';' '\n' > output.txt
\n 是新行,如果您只想要一个选项卡,则应将其替换为 \t
【讨论】: