嗨我需要在file1.txt上運行'sed'命令並讓它提取在StringA和StringB之間的所有名稱......例如:「暱稱」:「bad_name」,提取bad_name然後保存所有的結果也是Output.txt。這是甚至可能或者我應該看另一個命令?sed命令行
sed命令行
回答
沒有顯示你的file1.txt的更多示例,我假設你有一致的數據格式。如果是的話,用awk
echo '"Nickname":"bad_name"' | awk -F":" '{print $NF}'
對於一個文件,只需輸入文件名
awk -F":" '{print $NF}' file > output.txt
否則,提供更多的樣本數據讓我們一起工作。
使用的sed:
[email protected]:~$ cat file1
"Nickname":"bad_name"
"First Name":"Dmitry"
bad line
"Dog Name":"Chuppy"
another bad line
[email protected]:~$ cat file1 | sed -e '/\(.\+\)":"\(.\+\)"/!d' -e 's/"\(.\+\)":"\(.\+\)"/\2/'
bad_name
Dmitry
Chuppy
第一表達會刪除格式錯誤的線,第二個替換第二組匹配的圖案 - 的第二引號的內容。
該文件中有其他用戶信息,所以我必須隔離「暱稱「:」(帶引號)並提取bad_name,結尾字符串爲「, ex:」暱稱「:」bad_name「, 輸出:bad_name :不能單獨使用它來確定名稱的起始位置只是因爲它在其他數據中不是唯一的: – acctman 2010-07-24 06:54:21
那麼,在這種情況下,你需要將表達式的第一部分(第一個子模式)改爲'「暱稱」'。 因此,該命令將如下所示: 'cat file1 | sed -e'/"Nickname":"\\(.\+\\)"/!d'-e's /「暱稱」:「\\(。\ + \\)」/ \ 1 /'' – dmedvinsky 2010-07-24 08:10:26
我試過你列出的命令,它只顯示文件內容。 sed命令沒有運行或輸出任何東西。 cat file1.txt | sed -e'/"Nickname":"\\(.\+\\)"/!d'-e's /「暱稱」:「\\(。\ + \\)」/ \ 1 /' – acctman 2010-07-24 09:34:32
- 1. 命令行查找,sed,exec
- 2. 躲過行情sed命令
- 3. 在sed命令
- 4. Grep sed命令
- 5. 在sed命令
- 6. 使用sed命令
- 7. jenkins escape sed命令
- 8. $ {ARR [@]}在sed命令
- 9. Linux Bash sed命令
- 10. sed next&Next命令
- 11. grep和sed命令
- 12. SED替代命令
- 13. sed的-unterminated'S'命令
- 14. SED命令在UNIX
- 15. 殼牌sed命令
- 16. sed命令與\ n
- 17. Sed命令錯誤
- 18. sed命令從XML
- 19. 轉義SED命令
- 20. 使用sed命令
- 21. 結合SED命令
- 22. sed的: '// d' 命令
- 23. 限制sed命令
- 24. 理解sed命令
- 25. Unix的sed命令
- 26. 鞏固sed命令
- 27. sed命令:未終止的命令
- 28. 插入命令的複雜sed命令
- 29. 匹配sed命令中的特定行
- 30. SED插入命令行的OSX
什麼是StringA和StringB?引號? – 2010-07-24 04:56:39
在這個例子中是什麼'StringA'和'StringB'。它總是在':'之後的單詞,還是你真的在尋找一個不變的字符串? – Wolph 2010-07-24 04:57:15
如果您可以發佈幾行樣本輸入和輸出,我敢打賭有人可以提供幫助。目前尚不清楚你要求什麼。 – 2010-07-24 04:59:48