我有一个.txt文件,其中包含诸如blablabla:thatswhationlywant之类的不同单词。
blablabla词总是不同的。因此,我只需要打印出“:”之后的所有字符-我该怎么做?
非常感谢!
答案 0 :(得分:1)
您可以像这样使用grep:
grep -o ':.*' file.txt
但这将包括:
我可能会用cut来做,因为它会表现得更好
cut -d: -f2 file.txt
答案 1 :(得分:0)
使用cut
工具过滤grep的输出。
grep ":" file.txt | cut -d ":" -f 2
仅在字符':'之后显示文本
请查看cut
的手册页以获取更多信息
答案 2 :(得分:-2)
另一种可能性。这并不比提供的grep
解决方案更好或更糟,但是如果您是更熟悉sed s///
操作的简单应用的人之一,那么grep的-o
与{{1} }可能会吸引人。
\K
如果您对$: sed 's/^.*://' in.txt
thatswhationlywant.
不太熟悉(请查看here了解更多详细信息)-
sed
表示找到模式s/a/b/
并将其替换为a
。b
将搜索模式锚定在行的开头^
与任何字符匹配(同样,请参见精确异常情况的详细信息).
的意思是“前面的模式中的0个或多个”,在这种情况下是点(*
),因此任何字符的数目都是任意的.
是文字冒号因此:
的意思是“用任何/所有字符替换行首,直到不包含冒号。”
请注意,冒号是一个字符,因此,如果一行上有多个冒号,则会将它们全部消耗掉,因为's/^.*://'
是“贪婪的”。
*
如果这不是您想要的,请放在$: echo "a:b:c:d"|sed 's/^.*://'
d
中(这表示“ 不是一个冒号”,因为在方括号“字符类”中,{{1} }是[^:]
的'not'),例如:
^