我有一个输入文件作为
输入文件:
a b c d e f g h
i j k l m n o p q r
s t u v w x
我的输出应该是
输出文件:
a b c d
a b e f
a b g h
i j k l
i j m n
i j o p
i j q r
s t u v
s t w x
有什么命令吗?
答案1
awk -F ' ' '{for (i=3; i<=NF; i+=2) print $1" "$2" "$i" "$(i+1)}'
这是一个非常基本的字段循环。注意:
如果字段少于三个,则整行将被忽略。如果您仍想打印它,请使用以下命令:
awk -F ' ' '{if (NF<3) print; for (i=3; i<=NF; i+=2) print $1" "$2" "$i" "$(i+1)}'
具有 3、5 或 7 个字段(或任何更高的奇数)的输入行将生成其带有尾随空格的最终输出行,就好像第 4、第 6 或第 8 个字段在输入中作为空字段存在一样。
单个空格作为字段分隔符 (
-F ' '
) 是一种特殊情况,可匹配一个或多个空格和/或制表符。如果您希望将两个连续的空格解释为两个分隔符(中间有一个空字段),请使用匹配单个空格的正则表达式:-F '[ ]'
。你提到了输入和输出文件,因此你可能需要使用重定向:
<input_file awk … >output_file
其中
awk …
代表您选择的命令。