Files

查找和刪除以數字開頭/結尾的單詞

  • February 9, 2016

我有一個大文件(> 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

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