我有一个像这样的输入文件:
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
请解释一下。 提前致谢。 :)
答案 0 :(得分:2)
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
从评论(谢谢Ed):
$ cut -d'.' -f2- 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
答案 1 :(得分:0)
她是另一个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