Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.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
Awk 将包含多个列的文件读入包含一列的文件的脚本_Awk - Fatal编程技术网

Awk 将包含多个列的文件读入包含一列的文件的脚本

Awk 将包含多个列的文件读入包含一列的文件的脚本,awk,Awk,例如,如果我有一个文件,如下所示: 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命令执行此操作?有多种方法可以实现此目的 使用grep: grep -oE "[0-9]+" file -o标志仅打印匹配的模式(本例中的数字),以换行符分隔 -E激活扩展正则表达式 使用awk: awk 'OFS="\n"{$1=$1}1' file OFS定义输出字段分

例如,如果我有一个文件,如下所示:

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
命令执行此操作?

有多种方法可以实现此目的

使用
grep

grep -oE "[0-9]+" file
  • -o
    标志仅打印匹配的模式(本例中的数字),以换行符分隔
  • -E
    激活扩展正则表达式

使用
awk

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

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

      用换行符替换所有连续空格。

      朴素的AWK方法:

      #!/usr/bin/awk -f
      
      { for (i = 1; i <= NF; i++) print $i; }
      
      #/usr/bin/awk-f
      
      {for(i=1;我能请你解释一下这个命令吗?例如-oE在grep中做什么?OFS的意思是什么?对不起,我真的是一个初学者…我更喜欢awk命令,最近我发现它在我的工作中非常有用…非常感谢,这个awk可以完成我的工作,我会弄明白它的意思或这句话…@Sky我在我的回答中添加了解释谢谢!我会的我试着在awk上做更多的工作。看到了吗:?谢谢!但是这会在不同列的数据之间创建一个空行。awk'OFS=“\n”{$1=$1}1'给出一个没有空行的列。这可能是因为每一行都以一个或多个空格结尾…但是你的行更容易阅读…谢谢!