我有这个输出:
1024x768 75.0 70.1 60.0
如何将其发送至仅打印
1024x768
顺便说一句,任何人都可以为Sed提供一些文件?我需要学习如何使用它。
答案 0 :(得分:2)
使用POSIX字符类用sed去除空格后的所有内容。例如:
$ echo '1024x768 75.0 70.1 60.0' | sed 's/[[:space:]]\+.*//'
1024x768
虽然你可以使用sed,但是因为它的原生字段分割,awk中的问题要好得多。例如:
$ echo '1024x768 75.0 70.1 60.0' | awk '{print $1}'
1024x768
答案 1 :(得分:0)
您可以使用
处理自己的行sed 's/\s.*$//'
“查找第一个空格后的所有内容并替换为空白”
正如评论中指出的那样,\s
速记在sed
的所有版本中都不起作用,并且$符号是多余的;您可以使用sed 's/[\t ].*//
更普遍适用。 “在第一个标签或空格后查找所有内容,然后将其删除”。
当然我猜一点你要剥离的字符串的“一般情况”......你的问题似乎意味着你想删除所有带点的数字,这将是一个不同的表达,像这样:
sed 's/[0-9]+\.[0-9]+//g'
“替换以数字0到9的任意组合开头的测试块,后跟一个点,然后是另一组至少一个数字,没有任何内容”
有关优秀的sed文档,请参阅http://www.grymoire.com/Unix/Sed.html
awk
可能是这个例子中更好的工具(参见codegnome的回答)
答案 2 :(得分:0)
当我需要从文本中提取字符串时,grep
首先出现:
grep -o '^[^ ]*'
包含您的数据:
kent$ echo "1024x768 75.0 70.1 60.0"|grep -o '^[^ ]*'
1024x768
答案 3 :(得分:0)
这可能适合你(GNU sed):
sed -r 's/\s*([0-9]+)?\.[0-9]+\s*//g;/./!d' file
这将删除任何十进制数字和周围的空白区域。如果该行中没有任何内容,它也会删除空行。
有关丰富的sed资料,请参阅here。