Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sed 如何在linux中只打印文件第二列的非num?_Sed - Fatal编程技术网

Sed 如何在linux中只打印文件第二列的非num?

Sed 如何在linux中只打印文件第二列的非num?,sed,Sed,我的数据看起来 ID.NO|CUST 1989 | BZXY-P 17BY4| 1236 18719| 9281 ABTY | 49889 56QQB| 87 BWE 67 我要从这些数据中提取两个文件 文件1-仅来自第二列和对应第一列的非数值 身份证号码| CUST 1989年| BZXY-p 56QQB | 87 BWE 67 文件2-仅第2列的num值,以及相应的

我的数据看起来

          ID.NO|CUST   
          1989 | BZXY-P
          17BY4| 1236
          18719| 9281
          ABTY | 49889
          56QQB| 87 BWE 67
我要从这些数据中提取两个文件

文件1-仅来自第二列和对应第一列的非数值

身份证号码| CUST

1989年| BZXY-p

56QQB | 87 BWE 67

文件2-仅第2列的num值,以及相应的第1列

身份证号码| CUST

18719 | 9281

17BY4 | 1236

阿布蒂| 49889

已经试了好几次了,运气不好。我对核心linux不是很感兴趣,但我想为它找到一个解决方案,因为我现在觉得很难。此时,任何建议或帮助对我来说都绝对是一件好事。

awk解决方案:

输入文件
文件

ID.NO|CUST   
1989 | BZXY-P
17BY4| 1236
18719| 9281
ABTY | 49889
56QQB| 87 BWE 67

命令:

awk -F' *\\| *' 'BEGIN{ f1="File1.txt"; f2="File2.txt" }
     NR==1{ print > f1; print > f2; next}
     { print > (($2~/^[0-9]+$/)? f2:f1) }' file
结果:

> cat File1.txt 
ID.NO|CUST   
1989 | BZXY-P
56QQB| 87 BWE 67


早些时候我想“grep[Aa Zz]文件名,是soln!后来我意识到,grep将过滤掉整行,即使第1列也有非num,这不符合planThanks的回复!当我尝试此操作时,我发现文件1包含所有值,包括非num和file2-仅为空headers@joh,请参阅我答案中的输入文件。否则,您已发布非实际输入。解决方案应按预期工作。请参见屏幕截图i@joh,停止编辑我的文章。如果你想发布一些链接-通过评论发布。此外,你有
head-7 565.txt
-这与整个文件不同contents@EdMorton,是的,忘记了那一刻
> cat File2.txt 
ID.NO|CUST   
17BY4| 1236
18719| 9281
ABTY | 49889