我有一个包含文本数据的文件,这些文件由 分号“;” 分隔。我希望将数据分开,换句话说,将 ; 分开,并将数据写入输出文件。有没有办法处理bash脚本?
答案 0 :(得分:4)
您最有可能希望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
答案 1 :(得分:3)
#!/bin/bash
while read -d ';' ITEM; do
echo "$ITEM"
done
答案 2 :(得分:1)
尝试:
cat original_file.txt | cut -d";" -f1 > new_file.txt
这将分隔由“;”分隔的字段中的每一行并选择第一个字段(-f1)。 您可以使用-f1-2,-f2 - 来访问带-f1,-f2,...或多个字段的其他字段。
答案 3 :(得分:0)
您可以通过'tr'命令将字符翻译成另一个字符。
cat input.txt | tr';' '\ n'&gt; output.txt的强>
\ n 是新行,如果您只需要标签,则应将其替换为 \ t