2009-09-02 72 views
0

我有一个包含其通过分号分隔的文本数据的文件“;”。我想分开这些数据,换句话说就是分割;发生并将数据写入输出文件。有没有办法与bash脚本?将文件拆分成段?

回答

1

尝试:

cat original_file.txt | cut -d";" -f1 > new_file.txt 

这将在分割由分隔的字段的每一行 “;”并选择第一个字段(-f1)。 您可以使用-f1,-f2,...或多个字段使用-f1-2,-f2-访问其他字段。

+1

猫。切“-d”;“ -f1 org_file.txt> newfile – ghostdog74 2009-09-02 13:00:14

+0

剪切多个字段会在它们之间留下分隔符。 – 2009-09-02 13:02:13

4

您很可能希望awk设置为​​3210 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 
3
#!/bin/bash 

while read -d ';' ITEM; do 
    echo "$ITEM" 
done 
+0

就我所知,这是使用bash单独执行此操作的唯一有效方法;即不诉诸使用外部程序来进行解析。 – tylerl 2009-09-13 22:00:45

0

您可以通过“TR”命令转换角色到另一个角色。

猫input.txt中| tr';' '\ n'> output.txt的

\ n是新的生产线,如果你想有一个标签只有你应该替换\ t是否需要