2015-10-14 55 views
2

例如,如果我有一个文件如下:脚本读取与许多列的文件到一个文件中有一列

1 2 3 4 5 6 
7 8 9 10 11 12 

而且我希望重新组织该文件为:

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 

我可以使用awk命令吗?

+0

看到这个:[我试图创建一个文件集合的单词字典。有没有简单的方法来打印文件中的所有单词,每行一个?](http://stackoverflow.com/questions/1123572/extract-words-from-a-file)? – pelumi

回答

0

有多种方法可以实现这一点。

随着grep

grep -oE "[0-9]+" file 
  • -o标志只打印匹配模式(在这种情况下,数字),由换行
  • -E激活扩展正则表达式定界。

随着awk

awk 'OFS="\n"{$1=$1}1' file 
  • OFS定义了输出字段分隔符。
  • $1=$1因为我们改变了OFS,我们需要通过将第一个字段设置为自身来重建该行,这将强制重建。
  • 1至少我们需要一个真正的条件,即行被打印。
+0

你能解释一下命令吗?例如,-oE在grep中做了什么? OFS的含义是什么?对不起,我真的是初学者... – Sky

+0

我更喜欢awk命令,最近我发现它在我的工作中超级有用...非常感谢,这个awk可以完成我的工作,我会弄清楚这个意思或这句话... – Sky

+0

@Sky我将解释添加到我的答案 – chaos

0

随着sed

TMP$ sed -r 's/ +/\n/g' File 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 

与换行符替换所有连续的空间。

+0

谢谢!但是这个表扬将在不同栏目的数据之间创建一条空行。 awk'OFS =“\ n”{$ 1 = $ 1} 1'给出一列没有任何空行。 – Sky

+0

这可能是因为每一行都以一个或多个空格终止... –

0

天真AWK方法:

#!/usr/bin/awk -f 

{ for (i = 1; i <= NF; i++) print $i; } 

混沌的方法可能是更有效的。

+0

但您的阅读起来更容易......谢谢! – Sky

相关问题