我有一个comm命令的结果文件,它有2列,我希望将这两列分成两个不同的文件,我该怎么做?
该文件看起来像:
a b g f c d
答案 0 :(得分:5)
根据列分隔符,您可以执行以下操作:
cut -f1 orig_file >file1
cut -f2 orig_file >file2
这里列分隔符应该是TAB。如果是其他角色,您可以使用-d char
选项cut
。
如果要根据您的请求删除空行,可以向每行添加sed
命令:
cut -f1 orig_file | sed -e /^$/d >file1
cut -f2 orig_file | sed -e /^$/d >file2
答案 1 :(得分:1)
使用cut
将为每列产生一个命令。
您可以在单个命令中使用awk来完成。
awk '{for (i=1;i<=NF;i++) print $i>i".txt"}' your_file
默认情况下,Tab是字段分隔符。
如果字段分隔符不是制表符,则在awk
之后添加标记,如下所示
awk -F"<field separator>" '{....
答案 2 :(得分:1)
您可以根据字符索引剪切相关部分:
# assuming constant 5 chars for col1, 5 chars for col2
cat file | cut -c0-5 | sed '/^\s*$/ {d}' > col1
cat file | cut -c6-10 | sed '/^\s*$/ {d}' > col2
sed
管道删除空行(仅包含空格的行)。也可以使用grep -v '^[[:space:]]*$'
删除它们。