我想在通常有很長行的HTML文件上運行ack或grep。我不想看到重複包裹的很長的線條。但我確實希望看到圍繞與正則表達式匹配的字符串的長整行的那一部分。我如何使用Unix工具的任何組合來獲得這個結果?如何截斷由grep或ack返回的長匹配行
回答
你可以使用grep選項-o
,可能結合才能改變你的模式".{0,10}<original pattern>.{0,10}"
看到周圍的一些背景:
-o, --only-matching Show only the part of a matching line that matches PATTERN.
..或-c
:
-c, --count Suppress normal output; instead print a count of matching lines for each input file. With the -v, --invert-match option (see below), count non-matching lines.
管你的結果通過cut
。我還在考慮添加一個--cut開關,以便您可以說--cut = 80並且只能獲得80列。
如果匹配的部分不在前80個字符中怎麼辦? – Ether
FWIW我附上'| cut = c1-120'到grep,爲我工作(雖然不知道如何裁剪文字) –
''| cut = c1-120''不適合我,我需要做''| cut -c1-120'' –
你可以少用一個傳呼機作爲ack和排長線:ack --pager="less -S"
這保留了長線,但將其留在一條線上而不是纏繞。要查看更多線條,請使用箭頭鍵向左/向右滾動。
我有以下別名設置爲ACK做到這一點:
alias ick='ack -i --pager="less -R -S"'
請注意,如果你總是想使用它,你可以把'--pager'命令放在〜/ .ackrc文件中。 –
這聽起來像是迄今爲止最讓我感到困擾的問題。我希望我知道如何使用'ack'。 –
建議的方法".{0,10}<original pattern>.{0,10}"
是除外的高亮顏色往往是搞砸完美的。我創建了一個腳本,用類似的輸出,但是顏色也被保留:
#!/bin/bash
# Usage:
# grepl PATTERN [FILE]
# how many characters around the searching keyword should be shown?
context_length=10
# What is the length of the control character for the color before and after the
# matching string?
# This is mostly determined by the environmental variable GREP_COLORS.
control_length_before=$(($(echo a | grep --color=always a | cut -d a -f '1' | wc -c)-1))
control_length_after=$(($(echo a | grep --color=always a | cut -d a -f '2' | wc -c)-1))
grep -E --color=always "$1" $2 |
grep --color=none -oE \
".{0,$(($control_length_before + $context_length))}$1.{0,$(($control_length_after + $context_length))}"
假設腳本保存爲grepl
,然後grepl pattern file_with_long_lines
應該顯示匹配的行,但只有10個左右的匹配字符串中的字符。
cut -c 1-100
會從1個字符到100
- 1. Bash-ack - 匹配行的限制長度
- 2. Ruby grep,匹配並返回
- 3. grep不返回所有匹配行
- 4. SED或grep的或AWK匹配非常非常長的行
- 5. grep和只返回匹配的列
- 6. 如何將grep配置爲更像ack?
- 7. preg_match返回最長匹配
- 8. 通過的grep返回新行,如果沒有找到匹配
- 9. 截斷stdin行的長度?
- 10. 如何保存grep匹配的行?
- 11. 爲什麼grep返回不匹配的行
- 12. 如何通過bash中的grep一次獲得返回值和匹配的行?
- 13. 如何排除與grep或類似工具匹配的幾行?
- 14. 的grep或awk或者sed +匹配WORD
- 15. grep通過並返回href的內容如果匹配?
- 16. 匹配的grep
- 17. 如何使用grep來匹配空白或換行
- 18. Django截斷,如果不發生截斷,則返回false?
- 19. php截斷使用grep preg_match
- 20. 匹配行值返回DF2
- 21. ack-grep復活節彩蛋 - ack-grep的含義--cathy?
- 22. grep的或類似:重疊的匹配
- 23. 如何判斷在rails中是否有匹配返回true或false?
- 24. 如果路由器不匹配,如何返回404?
- 25. ack(ack-grep)忽略嵌套目錄
- 26. 用grep匹配
- 27. 如何從ack(ack-grep)中排除特定文件?
- 28. 匹配的grep中
- 29. 如何用ack(或等價物)返回一部分字符串?
- 30. Grep完全匹配返回與句號,空格,連字符等匹配
什麼'ack'?當你不喜歡某些東西時,是否使用這個命令?像'ack file_with_long_lines | grep模式'? :-) –
@Alok'ack'(在Debian上稱爲'ack-grep')在類固醇上是'grep'。它也有'--thpppt'選項(不是開玩笑)。 http://betterthangrep.com/ – ZoogieZork
謝謝。我今天學到了東西。 –