Text 使用awk从文本文件中删除第一列

Text 使用awk从文本文件中删除第一列,text,awk,sed,Text,Awk,Sed,我有下一个文本文件: Article_Title 1st_Author Publication_Year Language Citations Über die Theorie des Stoßes zwischen Atomen und elektrisch geladenen Teilchen Fermi

我有下一个文本文件:

Article_Title                                                                            1st_Author   Publication_Year    Language   Citations

Über die Theorie des Stoßes zwischen Atomen und elektrisch geladenen Teilchen            Fermi        1924                German     54
Zur Quantelung des idealen einatomigen Gases                                             Fermi        1926                German     333 
Eine statistische Methode zur Bestimmung einiger Eigenschaften des Atoms und ihre 
Anwendung auf die Theorie des periodi schen Systems der Elemente                         Fermi        1928                German     1833
Über die magnetischen Momente der Atomkerne                                              Fermi        1929                German     795
Über das Intensitätsverhältnis der Dublettkomponenten der Alkalien                       Fermi        1929                German     134
Über den Ramaneffekt des Kohlendioxyds                                                   Fermi        1931                German     594
Quantum Theory of Radiation                                                              Fermi        1932                English    951
Zur Theorie der Hyperfeinstruktur                                                        Fermi        1933                German     280
Possible Production of Elements of Atomic Number Higher than 92                          Fermi        1934                English    175
Versuch einer Theorie der β-Strahlen                                                     Fermi        1934                German     525
Sopra lo Spostamento per Pressione delle Righe Elevate delle Serie Spettrali             Fermi        1934                Italian    901
Tentativo di una Teoria Dei Raggi β                                                      Fermi        1934                Italian    475
On the Absorption and the Diffusion of Slow Neutrons                                     Almadi       1936                English    199
The Ionization Loss of Energy in Gases and in Condensed Materials                        Fermi        1940                English    710
The Capture of Negative Mesotrons in Matter                                              Fermi        1947                English    1156
Interference Phenomena of Slow Neutrons                                                  Fermi        1947                English    301
On the Origin of the Cosmic Radiation                                                    Fermi        1949                English    3309
Are Mesons Elementary Particles?                                                         Fermi        1949                English    498
Angular Distribution of the Pions Produced in High Energy Nuclear Collisions             Fermi        1951                English    324
Multiple Production of Pions in Nucleon-Nucleon Collisions at Cosmotron Energies         Fermi        1953                English    118
第一栏是科学文章名,第二栏是作者的姓氏,第三栏是发表年份,第四栏是文章语言,第五栏是引文数量

我想把它转换成这样的东西:

  1924  54
  1926  333

  1928  1833
  1929  795
  1929  134
  1931  594
  1932  951
  1933  280
  1934  175
  1934  525
  1934  901
  1934  475
  1936  199
  1940  710
  1947  1156
  1947  301
  1949  3309
  1949  498
  1951  324
  1953  118
所以,我需要删除第一列,第二列和第四列

问题是文章标题栏。。。 如果文章标题是这样的:

  1924  54
  1926  333

  1928  1833
  1929  795
  1929  134
  1931  594
  1932  951
  1933  280
  1934  175
  1934  525
  1934  901
  1934  475
  1936  199
  1940  710
  1947  1156
  1947  301
  1949  3309
  1949  498
  1951  324
  1953  118
辐射的量子理论

我只需要运行下一个命令:

sed -i '1,2d' plotting_data.txt  # Removing First and second Line 
awk '{$1=$2=$4=""; print $0}' plotting_data.txt > tmp && mv tmp plotting_data.txt # Removing First, Second and Fourth Column
问题是文章标题的字词之间有空格。。我不知道如何告诉awk或sed删除该列。。你能帮我吗

我正在使用下一个awk版本:

mawk 1.3.3 1996年11月,版权C Michael D.Brennan

汇编限制: 最大NF 32767 sprintf缓冲区2040


而且字段之间的空白都是空白字符

假设示例中的空白都是空白字符,这将在任何UNIX框上的任何shell中使用任何awk:

$ awk 'NR==1{beg=index($0,$2)} NR>2{$0=substr($0,beg); print $2, $4}' file
1924 54
1926 333

1928 1833
1929 795
1929 134
1931 594
1932 951
1933 280
1934 175
1934 525
1934 901
1934 475
1936 199
1940 710
1947 1156
1947 301
1949 3309
1949 498
1951 324
1953 118

假设您的示例中的空白都是空白字符,这将在任何UNIX设备上的任何shell中使用任何awk:

$ awk 'NR==1{beg=index($0,$2)} NR>2{$0=substr($0,beg); print $2, $4}' file
1924 54
1926 333

1928 1833
1929 795
1929 134
1931 594
1932 951
1933 280
1934 175
1934 525
1934 901
1934 475
1936 199
1940 710
1947 1156
1947 301
1949 3309
1949 498
1951 324
1953 118

评论不用于扩展讨论;此对话已结束。评论不用于扩展讨论;这段对话已经结束了。好吧,我同意了。比BEGIN{FIELDWIDTHS=89 13 20 11 9}漂亮得多,对GNU的依赖性也小得多……如果列之间的间距将来发生变化,它将继续工作。是的,我没有想到在整个记录中使用带有字段的索引作为搜索项。那是守门员。如果field2的文本出现在记录中field2之前的任何位置?@DavidC.Rankin Right,那么只有一点需要注意,即如果field2可以是输入文件第一行/头行中field1的子字符串,并且field1不能包含空格,那么您可以使用非空格/空格重复的匹配,并使用结果RLENGTH+1作为起始索引。你可以跳转,试图使它防弹处理空白的标题值太多,但针对实际数据总是简单得多。好吧,这得到了点头。比BEGIN{FIELDWIDTHS=89 13 20 11 9}漂亮得多,对GNU的依赖性也小得多……如果列之间的间距将来发生变化,它将继续工作。是的,我没有想到在整个记录中使用带有字段的索引作为搜索项。那是守门员。如果field2的文本出现在记录中field2之前的任何位置?@DavidC.Rankin Right,那么只有一点需要注意,即如果field2可以是输入文件第一行/头行中field1的子字符串,并且field1不能包含空格,那么您可以使用非空格/空格重复的匹配,并使用结果RLENGTH+1作为起始索引。您也可以跳转,尝试使其防弹处理标题值中的空白,但针对实际数据总是简单得多。