Text-Processing
如何列印文件中的前兩個欄位?
我有一個包含國家名稱的文件,然後是該國家的移動國家程式碼前綴,如下所示:
United Kingdom +44 ...more fields United States Virgin Islands +1 ...more fields
我需要獲取國家名稱和移動前綴。所以正則表達式讀起來像:從行首讀取所有單詞,然後是一個以加號開頭的字元串,再多一個數字,然後停止。
我用 grep、cut 甚至 sed 嘗試了一些東西,但我做不到。
嘗試:
grep -o '^[^+]*+[0-9]\+' infile
[^+]*+
匹配所有內容,直到第一次+
找到後跟一個或多個數字[0-9]\+
命令行:
$ perl -lne 'print /^(.*?\+\d+)/' input.txt
這將從輸入中獲得所需的資訊。
在職的:
/^(.*?\+\d+)/
正則表達式將提取所有內容,直到第一次出現加號,後跟至少一個數字元號。- 由於這是
BOL
通過^
插入符號連接到的,因此顯然只能發生一次匹配。- 匹配被傳遞給
-lne
options 是在 input.file 的每一行執行選項中Perl
給出的程式碼。除非特別要求,否則 perl 不會列印任何內容。-e``-n
輸出:
United Kingdom +44 United States Virgin Islands +1