我正在查看所有具有不同版本号的文件,这些版本号从第7行的第18列开始。
使用Bash从列“$variable”18到行尾读取第7行的字符串(到字符)的最佳方式是什么?这行的倒数第五个字符是什么?
发布于 2012-06-13 01:42:49
sed方式:
variable=$(sed -n '7s/^.\{17\}//p' file)编辑(感谢评论者):如果您所说的列是指字段(用制表符或空格分隔),则可以将命令更改为
variable=$(sed -n '7s/^\(\s\+\S\+\)\{17\}//p' file)发布于 2012-06-13 01:44:15
使用
var=$(head -n 17 filename | tail -n 1 | cut -f 18-)或
var=$(awk 'NR == 17' {delim = ""; for (i = 18; i <= NF; i++) {printf "%s%s", delim, $i; delim = OFS}; printf "\n"}')如果你指的是“字符”而不是“字段”:
var=$(head -n 17 filename | tail -n 1 | cut -c 18-)或
var=$(awk 'NR == 17' {print substr($0, 18)}')发布于 2012-06-13 01:48:22
根据您要使用的实用程序,您可以使用多种不同的方法来实现此目的。您的一个选择是以以下任何一种方式使用Bash的子字符串扩展:
sed
line=1
string=$(sed -n "${line}p" /etc/passwd)
echo "${string:17}"awk
line=1
string=$(awk "NR==${line} {print}; {next}" /etc/passwd)
echo "${string:17}"核心实用程序
line=1
string=`{ head -n $line | tail -n1; } < /etc/passwd`
echo "${string:17}"https://stackoverflow.com/questions/11001865
复制相似问题