Files
查找和刪除以數字開頭/結尾的單詞
我有一個大文件(> 10000 行),每行包含一個單詞,每個單詞後面都有一個換行符。單詞不包含空格。
我想列出(甚至更好,輸出到新文件)任何以數字開頭和/或結尾的單詞,然後我想從原始文件中刪除這些單詞。但我不想刪除只包含數字的單詞。
例如,如果我有內容
789 hello 1hello 112121hello3323 he11o hello9 88888
然後字元串
1hello
,112121hello3323
,hello9
將得到輸出,然後從文件中刪除。我怎樣才能做到這一點?
GNU grep
grep -vP '^\d+\D|\D\d+$'
生產
789 hello he11o 88888
實際編輯源文件並使用丟棄創建一個新文件有點棘手。我會這樣做
$ cat file 789 hello 1hello 112121hello3323 he11o hello9 88888 $ perl -i -lne 'if (/^\d+\D|\D\d+$/) {warn "$_\n"} else {print}' file 2>file_nums $ cat file 789 hello he11o 88888 $ cat file_nums 1hello 112121hello3323 hello9
匹配的行在 stderr 上輸出,然後重定向到單獨的文件。perl 的
-i
標誌負責就地保存更改。單線可能更棘手:
perl -i -lne 'print {/^\d+\D|\D\d+$/ ? STDERR : ARGVOUT} $_' file 2>file_nums