Text-Processing
如何從文件中提取特定單詞
如果我有一個看起來像這樣的文件,例如名為 myfile.log
1 entry1 # Blah blah 2 entry2 # Blah blah 3 entry3 # Blah blah 4 entry4 # Blah blah 5 myentry5 # Blah blah 6 myentry6 # Blah blah 7 yourentry7 # Blah blah 8 yourentry8 # Blah blah 9 ourentry9 # Blah blah 10 ourentry10 # Blah blah
我將如何只提取包含“條目”的單詞,所以輸出應該看起來像
entry1 entry2 entry3 entry4 myentry5 myentry6 yourentry7 yourentry8 ourentry9 ourentry10
已經嘗試了各種 grep、sed、awk 命令,但只能得到我想要的,它要麼在行上輸出所有內容,要麼我得到它只是說 entry 而不是包含 entry 的所有內容
編輯 - 文件在現實中看起來像這樣(已清理) - 需要使用 RTR 提取所有條目
10.0.0.1 MYRTR001 # Router in Raleigh 10.0.0.2 MYSW100 # Switch in Raleigh 10.0.0.3 MYRTR002 # Router in Houston 10.0.0.4 MYSW001 # Switch in Houton
使用
sed
$ sed '/entry/s/[^ ]* *\([^ ]*\).*/\1/' input_file entry1 entry2 entry3 entry4 myentry5 myentry6 yourentry7 yourentry8 ourentry9 ourentry10
使用
awk
awk '/entry/{print $2}' input_file entry1 entry2 entry3 entry4 myentry5 myentry6 yourentry7 yourentry8 ourentry9 ourentry10
使用 GNU
grep
iwth-o
僅返回匹配字元串的選項:grep -o '[^ ]*entry[^ ]*'
這將只列印包含字元串的單詞,
entry
無論它們在文件中的什麼位置或它們之前或之後的內容。即使每行開頭的數字實際上並不存在並且您只是出於描述目的而將它們包含在內,它也會返回所需的內容。輸出:
entry1 entry2 entry3 entry4 myentry5 myentry6 yourentry7 yourentry8 ourentry9 ourentry10