Mik*_*der 7 linux awk grep text-processing sed
我有一个名为'plainlinks'的文件,如下所示:
13080. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94092-2012.gz
13081. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94094-2012.gz
13082. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94096-2012.gz
13083. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94097-2012.gz
13084. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94098-2012.gz
13085. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94644-2012.gz
13086. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94645-2012.gz
13087. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94995-2012.gz
13088. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-94996-2012.gz
13089. ftp://ftp3.ncdc.noaa.gov/pub/data/noaa/999999-96404-2012.gz
Run Code Online (Sandbox Code Playgroud)
我需要生成如下所示的输出:
999999-94092
999999-94094
999999-94096
999999-94097
999999-94098
999999-94644
999999-94645
999999-94995
999999-94996
999999-96404
Run Code Online (Sandbox Code Playgroud)
Chr*_*our 11
使用sed
:
sed -E 's/.*\/(.*)-.*/\1/' plainlinks
Run Code Online (Sandbox Code Playgroud)
输出:
999999-94092
999999-94094
999999-94096
999999-94097
999999-94098
999999-94644
999999-94645
999999-94995
999999-94996
999999-96404
Run Code Online (Sandbox Code Playgroud)
要将更改保存到文件,请使用以下-i
选项:
sed -Ei 's/.*\/(.*)-.*/\1/' plainlinks
Run Code Online (Sandbox Code Playgroud)
或者保存到新文件然后重定向:
sed -E 's/.*\/(.*)-.*/\1/' plainlinks > newfile.txt
Run Code Online (Sandbox Code Playgroud)
说明:
s/ # subsitution
.* # match anything
\/ # upto the last forward-slash (escaped to not confused a sed)
(.*) # anything after the last forward-slash (captured in brackets)
- # upto a hypen
.* # anything else left on line
/ # end match; start replace
\1 # the value captured in the first (only) set of brackets
/ # end
Run Code Online (Sandbox Code Playgroud)
纯娱乐.
awk -F\/ '{print substr($7,0,12)}' plainlinks
或者 grep
grep -Eo '[0-9]{6}-[0-9]{5}' plainlinks