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作为起始索引。您也可以跳转,尝试使其防弹处理标题值中的空白,但针对实际数据总是简单得多。