回答
如果你想每行的第三個字,然後使用cut -f 3 file_name
。如果你只希望第三個單詞匹配一個特定的字符串awk '/^word_1/ { print $3; }' file_name
或類似的東西(這已經有一段時間了,因爲我已經使用了awk,所以在使用它之前我必須查找語法)。
使用awk
可以使用for循環在n個空格之後打印單詞。如果你有保存在bash可變空間的數量,你可以這樣做:
spaces=0
awk -v n=$spaces '{ for (i=n+1; i<=NF; i++) printf (i!=NF) ? $i" " : $i"\n" }' file.txt
結果:
word_1 something test
spaces=1
awk -v n=$spaces '{ for (i=n+1; i<=NF; i++) printf (i!=NF) ? $i" " : $i"\n" }' file.txt
結果:
something test
spaces=2
awk -v n=$spaces '{ for (i=n+1; i<=NF; i++) printf (i!=NF) ? $i" " : $i"\n" }' file.txt
結果:
test
此外,你的男人希望將字段分隔符設置爲單個空格。你可以使用這個標誌:'-F「」',這樣代碼看起來就像'awk -F「」-v n = ...'。否則'awk'將任何數量的空白視爲字段分隔符。 HTH。 – Steve
這似乎過於複雜。 – Bernhard
@Bernhard:我認爲OP正在尋找在_n_空格之後打印單詞,儘管不清楚「空格」是什麼。這是單個空間還是未知數量的空白?在我的回答中,我已經逐字地說出了這個詞,並在我的第一條評論中爲單個空間添加了一個選項。我假設OP對'awk' /'sed'有基本的瞭解,但可能沒有考慮使用'for'循環。 'printf'語句和變量輸入只是鐘聲和哨聲。 – Steve
如果你只是想每一行的第二個或第三個字,我只用awk
這樣的:
awk '{ print $2 }' file.txt
用於第二單詞,或$3
而不是$2
第三等
@保羅·湯姆林的建議與cut
也很好,雖然我的意見是,我是如果我想用awk
這個簡單的東西,我會用它,而不是花時間和大腦細胞來找出我需要使用其他隨機Posix命令的神祕選項。也就是說,我認爲值得集中精力去學習更一般的工具(如awk
)。
這可能會爲你工作(GNU SED):
echo {a..z} | sed -r 's/(\s*(\S*)){10}.*/\2/'
j
哪裏{10}
可以是任意數量的如{2}
將返回b
對於高位數字awk
是一個更有效率。
- 1. 使用匹配匹配整個單詞
- 2. 匹配詞組
- 3. Excel詞匹配
- 4. Preg匹配單詞和期間前後
- 5. 正則表達式匹配後的詞
- 6. Grep:匹配前後的最大單詞
- 7. Gawk [打印線後匹配/單詞/(不使用getline)
- 8. 如何使用OMetaJS匹配單詞?
- 9. 使用PredicateBuilder匹配部分詞
- 10. 使用RegEx匹配相似單詞
- 11. 使用sed條件匹配單詞
- 12. 使用grep匹配確切的單詞
- 13. 使用PL/SQL搜索詞匹配
- 14. 多個搜索詞匹配使用strpos
- 15. 使用RE找到匹配的單詞
- 16. 如何使用LINQ匹配單詞
- 17. 我正在嘗試使用awk匹配單詞後得到下一個單詞
- 18. MySQL匹配集詞
- 19. 音譯詞匹配
- 20. grep匹配一個單詞,但不匹配另一個單詞
- 21. 獲取匹配詞後的下一個單詞在Javascript中
- 22. 使用正則表達式匹配部分單詞或單詞
- 23. 使用Solr匹配包含相似單詞的單詞嗎?
- 24. 在單詞中匹配單詞Python
- 25. 使用sed更改匹配後的第一個匹配
- 26. 用PHP預先匹配後獲取下一個單詞
- 27. 用grep打印圖案後的匹配詞
- 28. 用正則表達式匹配兩個後續單詞?
- 29. ř匹配整個單詞
- 30. 詞彙組匹配文本
Grep不是最好的工具。看看sed或awk。 –
@PaulTomblin:將問題更改爲'sed' /'awk'。 –