如何在Bash命令行从指定位置开始打印单行内容
Bash命令行打印内容及指定位置起始打印方法
基础打印内容的方式
- 用
echo直接输出文本,最简单直接:echo "One two three four five six" - 用
printf做格式化输出,适合需要调整排版的场景:printf "%s\n" "One two three four five six"
从指定字段位置开始打印
要实现从第5个字段开始打印、输出单行"five six"的需求,这几种常用工具都能搞定:
方法1:用cut命令截取
cut可以按指定分隔符分割文本,直接截取第5个字段到末尾的内容:
echo "One two three four five six" | cut -d' ' -f5-
参数说明:
-d' ':指定空格作为字段分隔符-f5-:表示截取第5个字段直至最后一个字段的所有内容
方法2:用awk命令处理
awk在文本字段处理上很灵活,通过循环输出从第5个字段开始的内容:
echo "One two three four five six" | awk '{for(i=5;i<=NF;i++) printf "%s ",$i; print ""}'
NF是awk内置变量,代表当前行的总字段数- 循环从第5个字段遍历到最后,逐个打印字段并添加空格,最后用
print ""换行保证输出格式正确
方法3:用sed命令替换
通过正则匹配删除前4个字段及对应的空格,留下后面的内容:
echo "One two three four five six" | sed 's/^[^ ]* [^ ]* [^ ]* [^ ]* //'
正则表达式^[^ ]* [^ ]* [^ ]* [^ ]* 会匹配开头的4个字段和后面的空格,替换为空字符串后就得到从第5个字段开始的内容
内容的提问来源于stack exchange,提问作者Rami
相关产品推荐
相关产品推荐

