我有一个这样的文件:
67 lol
143 hi
21 test
1 ciao
5 lo
我想删除空格。
67 lol
143 hi
21 test
1 ciao
5 lo
我知道我可以使用 sed 来做到这一点,例如:
cat ciao | sed 's/[[:space:]]*\([[:digit:]]* .*\)/\1/' | sort -g
但我的教授说我可以轻松地使用 cut 来做到这一点......但我真的不知道如何做。
像这样的东西:
cat ciao | rev | cut -d' ' -f1 | rev
不起作用,因为我丢失了号码信息。哈哈你好测试再见罗
答案1
如果您的文件有制表符而不是空格,则只能使用cut
:
cut -f2- < file
使用空格,是不够的,但您可以使用和cut
的组合:tr
cut
tr -s ' ' < file | cut -d' ' -f2-
答案2
我找到了答案:我可以这样做:
cat ciao | rev | cut -d ' ' -f 1,2 | rev
以免丢失号码信息。作品!
答案3
考虑一下,在你的教授展示出有效的代码之前,他们可能不知道自己在说什么。该cut
实用程序是一个用于提取由某个单个字符分隔的列的工具。你的数据不是这样的。
如果您只想删除行开头的任何空格,则以下sed
命令将通过匹配每行开头的零个或多个空格并将其删除来实现。
sed 's/^ *//' file
仅当您知道任何行上都没有比初始行更多的空格以及数字和单词之间的单个空格(对此您只字不提)时,才可以使用cut
and 。rev
如果你有一句话说12 Abba Baab
,那不再成立。