-
文件 nk.txt如下
-
123
-
456
-
7890
-
...
-
文件 com.txt 如下
-
AS673 02972 0000000170015612AI123 50134 0000001674815617YU766301347 0000000167481561RT789002972 0000000017001561...
-
-
生成的新文件n_com.t如下:
-
AI123 50134 0000001674815617RT789002972 0000000017001561
-
-
文件nk.txt中数据无重复,长度为3位或4位。文件com.txt中所有数据为一行,第1位到30位为一组数据,每组数据中第3到第6位(不满4位以空格占位)如果有同nk.txt文件中相同的数据,则输出到新文件n_com.txt。
- 新文件中还是每30个字符为一组,所有数据还是为一行
我的解法:
- awk 'NR==FNR{a[substr($0" ",1,4)]++;next}(substr($0,3,4) in a){printf $0}END{print ""}' nk.txt <(grep -Eo '.{30}' com.txt)
精妙在于<()的用法,可以把里面的命令当成一个文件