我有三个文本文件,我想从每个文件中复制/剪切第3和第4列,然后将它们(彼此相邻)插入到新的文本文件中。
以下是其中一个文本文件的内容:
03Z 23:00 69.7F 20.9C
04Z 00:00 70.1F 21.2C
05Z 01:00 69.7F 20.9C
06Z 02:00 69.1F 20.6C
07Z 03:00 68.5F 20.3C
08Z 04:00 67.0F 19.4C
09Z 05:00 65.4F 18.6C
10Z 06:00 64.5F 18.1C
11Z 07:00 63.8F 17.7C
12Z 08:00 64.9F 18.3C
13Z 09:00 68.6F 20.3C
14Z 10:00 72.7F 22.6C
15Z 11:00 75.6F 24.2C
16Z 12:00 78.3F 25.7C
17Z 13:00 79.4F 26.4C
18Z 14:00 79.9F 26.6C
我猜测sed
或awk
是实现这一目标的好方法吗?
答案 0 :(得分:1)
这将收集连接在一起的所有第3和第4列:
awk '{print $3,$4}' file1 file2 file3
如果您希望第二个文件的第3列和第4列以及第三个文件成为输出的第3至第6列,那么您需要bash
中的一点点爱好者:
paste <(awk 'BEGIN {OFS="\t"} {print $3,$4}' file1) \
<(awk 'BEGIN {OFS="\t"} {print $3,$4}' file2) \
<(awk 'BEGIN {OFS="\t"} {print $3,$4}' file3)
或者,您可以单独处理每个文件,然后在最后paste
将它们放在一起。
for f in file1 file2 file3
do
awk 'BEGIN {OFS="\t"} {print $3,$4}' $f > $f.tmp
done
paste file1.tmp file2.tmp file3.tmp
答案 1 :(得分:0)
在这种情况下,您可以使用更合适的剪切:
cut -d" " -f3,4 file1 file2 file3 > result.txt
注意:如果列由制表符分隔,则可以删除-d" "
,因为制表符是剪切的默认分隔符。
注意2:如果文件名确实已编号,您可以使用[1-3]
或[a-c]
等:
cut -d" " -f3,4 file[1-3] > result.txt