對不起,我剛剛開始並且無法在其他任何地方找到合適的答案。基本上,我有一個保存爲純文本的HTML文件,並且我想從一行中拉出一個字符串。該生產線是這樣的:從HTML文件中提取字符串
<li><strong>Password: XXXXXX</strong></li>
首先,這是該行,我想拉的第二個實例。而我唯一想要的部分是XXXXXX。除了XXXXXX之外,我希望刪除文件中的所有其他內容。字符串經常變化,所以我不能僅僅爲此而煩惱。謝謝你的幫助。
對不起,我剛剛開始並且無法在其他任何地方找到合適的答案。基本上,我有一個保存爲純文本的HTML文件,並且我想從一行中拉出一個字符串。該生產線是這樣的:從HTML文件中提取字符串
<li><strong>Password: XXXXXX</strong></li>
首先,這是該行,我想拉的第二個實例。而我唯一想要的部分是XXXXXX。除了XXXXXX之外,我希望刪除文件中的所有其他內容。字符串經常變化,所以我不能僅僅爲此而煩惱。謝謝你的幫助。
這樣的事情應該工作:
cat c.txt |grep "Password:"|awk '{print $2}'|awk -F "<" '{print $1}'|sed -n 2p
@sullivnc,你可以請嘗試以下,讓我知道,如果這可以幫助你。
echo your_Input_line_here | awk '{gsub(/.*Password: |<\/.*/,X,$0);print}'
這將比aggaton建議的更短,更快。
請停止混淆您的代碼,並使用未初始化的變量('X')而不是簡單的空字符串('「」')使其變得脆弱。你不需要',$ 0',因爲這是默認的。 OP希望第二次出現的密碼不是每一次出現,都不要求每一行都要打印。 –
另外,如果OP確實想要打印每一行 - 這將從每行刪除'
@ EdMorton-我在這裏感謝您的寶貴意見。我將不會嘗試將來再次提出這個問題,感謝您提供寶貴的指導。 – RavinderSingh13
$ cat file
<li><strong>Password: AAAAAA</strong></li>
<li><strong>Password: XXXXXX</strong></li>
<li><strong>Password: ZZZZZZ</strong></li>
$ awk 'sub(/.*<li><strong>Password: /,"") && sub(/<\/strong><\/li>.*/,"") && ++c==2' file
XXXXXX
只要糾正行NR。
awk -F'[: <]' 'NR == 1 {print $5}' file
XXXXXX
正是我在找什麼,謝謝! – sullivnc
@sullivnc最好至少等上幾個小時才能接受答案,因爲經常你得到的第一個答案不是最好的答案,但是一旦答案已被接受,你的問題就會比其他答案更少。在這種情況下,你接受的答案有一個UUOC和一個由4個獨立命令組成的管道,當它們執行時會給出各種不同的密碼值,所以它不是一個很好的解決方案,實際上你到目前爲止收到的其他答案都是比這個更好。 –