Text-Processing

如何列印文件中的前兩個欄位?

  • June 6, 2019

我有一個包含國家名稱的文件,然後是該國家的移動國家程式碼前綴,如下所示:

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通過^插入符號連接到的,因此顯然只能發生一次匹配。
  • 匹配被傳遞給print函式。
  • -lneoptions 是在 input.file 的每一行執行選項中Perl給出的程式碼。除非特別要求,否則 perl 不會列印任何內容。-e``-n

輸出:

United Kingdom   +44
United States Virgin Islands +1

引用自:https://unix.stackexchange.com/questions/521699