如何使用AWK命令删除包含delimeter的列&引用;?

如何使用AWK命令删除包含delimeter的列&引用;?,awk,Awk,我有这样一个输入文件: 01.gold 1 1986 USA American Eagle 02.gold 1 1908 Austria-Hungary Franz Josef 100 Korona 03.silver 10 1981 USA ingot 04.gold 1 1984 Switzerland ingot 我想删除“.”之前的字段,包括“.”。所需输出为: gold 1 1986 USA American Eagle gold 1 1908 Austria-Hungary Fra

我有这样一个输入文件:

01.gold 1 1986 USA American Eagle
02.gold 1 1908 Austria-Hungary Franz Josef 100 Korona
03.silver 10 1981 USA ingot
04.gold 1 1984 Switzerland ingot
我想删除“.”之前的字段,包括“.”。所需输出为:

gold 1 1986 USA American Eagle
gold 1 1908 Austria-Hungary Franz Josef 100 Korona
silver 10 1981 USA ingot
gold 1 1984 Switzerland ingot 
请解释一下。
提前感谢。:)

sed
在我看来会更容易

$ sed 's/^.*\.//' file
gold 1 1986 USA American Eagle
gold 1 1908 Austria-Hungary Franz Josef 100 Korona
silver 10 1981 USA ingot
gold 1 1984 Switzerland ingot
^..*\.
表示查看开头并匹配任何字符,直到看到文字
。什么都不要换

使用awk的两种方式:

逻辑类似于上面给出的
sed
。使用
sub
功能

$ awk '{sub(/.*\./,"")}1' file
gold 1 1986 USA American Eagle
gold 1 1908 Austria-Hungary Franz Josef 100 Korona
silver 10 1981 USA ingot
gold 1 1984 Switzerland ingot
如果字符串中的
不止一次,则此代码可能会中断

$ awk -F'.' '{print $2}' file
gold 1 1986 USA American Eagle
gold 1 1908 Austria-Hungary Franz Josef 100 Korona
silver 10 1981 USA ingot
gold 1 1984 Switzerland ingot
从评论中(谢谢):


她是另一个
awk

awk 'BEGIN {FS=OFS="."} {$1=""; sub(/\./, "")}'1  file
gold 1 1986 USA American Eagle
gold 1 1908 Austria-Hungary Franz Josef 100 Korona
silver 10 1981 USA ingot
gold 1 1984 Switzerland ingot

另一个选项是
cut
cut-d-f1-补码文件
即使用分隔符“.”,打印除第一列以外的所有内容。只需添加
cut-d'.-f2-文件
即可完成设置。为什么第二个
awk
示例中的点被转义?@AdrianFrühwirth感谢修复。也从第一个删除了它,因为它是不需要的。
awk 'BEGIN {FS=OFS="."} {$1=""; sub(/\./, "")}'1  file
gold 1 1986 USA American Eagle
gold 1 1908 Austria-Hungary Franz Josef 100 Korona
silver 10 1981 USA ingot
gold 1 1984 Switzerland ingot