从shell脚本的每一行中获取前5个字符

用户2622247:

这是我的sample.txt文件,其中包含以下内容

31113    70:54:D2 - a-31003
31114    70:54:D2 - b-31304
31111    4C:72:B9 - c-31303
31112    4C:72:B9 - d-31302

我必须编写shell脚本,因为我要将前5个字符(例如31113)作为输入ID传递给其他脚本。为此,我尝试了这个

#!/bin/sh
filename='sample.txt'
filelines=`cat $filename`
while read -r line
do
  id= cut -c-5 $line
  echo $id
  #code for passing id to other script file as parameter
done < "$filename"

但是它不起作用,这给了我错误

cut: 31113: No such file or directory
cut: 70:54:D2 No such file or directory
31114
31111
31112
: No such file or directory

我怎样才能做到这一点?

fedorqui'停止伤害':

如果要使用cut这种方式,则需要使用重定向<<<(此处为字符串),例如:

var=$(cut -c-5 <<< "$line")

注意使用var=$(command)表达式代替id= cut -c-5 $line这是将命令保存到变量中的方法。

另外,请使用/bin/bash而不是/bin/sh使其正常工作。


对我有用的完整代码:

#!/bin/bash

filename='sample.txt'
while read -r line
do
  id=$(cut -c-5 <<< "$line")
  echo $id
  #code for passing id to other script file as parameter
done < "$filename"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从R列的每一行中删除前三个字符

命令获取一行的前5个和后10个字符

在一行bash脚本中打印出5个字符

如何从原子编辑器的每一行中删除前23个字符?

如何从多行字符串的每一行中删除前 40 个字符?

shell脚本删除一行的最后一个字符

从文本文件的每一行中删除前 4 个字符

熊猫:从每一行获取字符串的第二个字符

从Python数据框的一列中的每一行中删除前x个字符

从文本文件中获取一行的前n个字符?

如何使用 SQL 替换特定列中每一行的前两个字符?

如何使用 SQL 删除此列中每一行的前两个字符?

如何删除RichTextBox中每一行的第一个字符

在 Pandas Dataframe 的每一行中搜索一个字符串并返回找到的列名

向文本文件php中的每一行添加一个字符

如何在Richtextbox中的每一行的开头删除一个字符

给定C中的文件名,如何仅读取75个字符的每一行?

在文本的每一行的开头和结尾添加一个字符

如何使用vim删除每一行的最后一个字符

删除每一行的最后一个字符

从熊猫数据帧的每一行中的单词中删除多个字符组合

从emacs缓冲区的每一行中删除最后n个字符

将文本文件中的每一行缩短59个字符,然后在其位置添加一个新的较短的字符串

在文件的每一行中添加一个字符串,每个文件中添加的字符串增加1

通过从文件中的每一行获取两个参数来循环的 Shell(bash) 脚本

如何从CSV文件的每一行中删除第一列中的第一个字符?

测试文件中的每一行是否包含另一个文件中的多个字符串之一

每5个字符分割一个字符串

获取上一行的第一个字符