【问题标题】:BASH: Print Nth Letter From BeginningBASH:从头开始打印第 N 个字母
【发布时间】:2014-11-17 17:02:25
【问题描述】:

我想读取所有文件并从所有行的开头打印第 N 个字母(只是字母)。

我是这样读取文件的:

读行时

echo $line >> text.txt

完成

然后我这样做:

cut -c3 text.txt

但我意识到它在这些输入中无法正常工作:

嘿嘿

重新设置

我想为第一个输入获取“l”,为第二个输入获取“s”。

但是这段代码发现第一个输入是'',第二个输入是'+'

而anubhava写了这段代码:

awk -v n=3 '{gsub(/ +/, "");打印 substr($0, n, 1)}' 文件

除空格外,它正在为第 N 个字母工作

但现在我想打印第 N 个字母(只是字母)

我该怎么办?

【问题讨论】:

  • 你能提供一些示例输入和输出吗?
  • 如果第三个字符是空格,你想让它跳过这一行吗?

标签: bash file cut


【解决方案1】:

你可以使用这个 awk:

awk -v n=3 '{gsub(/ +/, ""); print substr($0, n, 1)}' file

测试:

s='re set'
awk -v n=3 '{gsub(/ +/, ""); print substr($0, n, 1)}' <<< "$s"
s

s='He llo'
awk -v n=3 '{gsub(/ +/, ""); print substr($0, n, 1)}' <<< "$s"
l

s='1 2 345'
awk -v n=3 '{gsub(/ +/, ""); print substr($0, n, 1)}' <<< "$s"
3

【讨论】:

  • 我的问题变了。它正在解决其他问题。你也看看这个问题吗?
  • 如果您删除 gsub(/ +/, ""); 调用它只会在输入中打印 nth 字母。
  • 非常感谢!那么 gsub() 是否有助于删除空间?
  • Yes gsub 仅用于删除空格。
  • 还有没有更简单的方法可以用'cut'命令来做到这一点?因为我想学习 cut 命令。
猜你喜欢
  • 1970-01-01
  • 2018-10-05
  • 2012-05-05
  • 2018-07-07
  • 1970-01-01
  • 2017-01-22
  • 2023-03-19
  • 2020-11-24
  • 1970-01-01
相关资源
最近更新 更多