Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
BASH-将文件的特定部分复制到字符串中_Bash_Unix_Sh - Fatal编程技术网

BASH-将文件的特定部分复制到字符串中

BASH-将文件的特定部分复制到字符串中,bash,unix,sh,Bash,Unix,Sh,我有一个文本文件,叫它Jy.dat 我想通过bash脚本选择第7行的20到29个字符,并将它们复制到字符串变量中。 我尝试过sed,但没有成功 你能帮忙吗 感谢您的建议。您可以使用awk: awk 'NR == 7 {print substr($0, 20, 9); exit}' file 要复制到变量中,请执行以下操作: str=$(awk 'NR == 7 {print substr($0, 20, 9); exit}' file) sed'7q;d'Jy.dat用于选择文件的第7行 然

我有一个文本文件,叫它Jy.dat

我想通过bash脚本选择第7行的20到29个字符,并将它们复制到字符串变量中。 我尝试过sed,但没有成功

你能帮忙吗

感谢您的建议。

您可以使用awk:

awk 'NR == 7 {print substr($0, 20, 9); exit}' file
要复制到变量中,请执行以下操作:

str=$(awk 'NR == 7 {print substr($0, 20, 9); exit}' file)
sed'7q;d'Jy.dat用于选择文件的第7行 然后切割-c20-29以仅选择那些字符


所以,所有这些加在一起:myvar=$sed'7q;d'Jy.dat | cut-c20-29

您可以尝试下面的sed命令

foo=$(sed -rn '7s/^.{19}(.{10}).*/\1/p' file)
例如:


这似乎很好,但如何将其复制到字符串变量中?这里不需要cut,因为sed或awk也可以获取子字符串。@anubhava:你可能是对的,但这是我知道的唯一方法:使用此命令或尝试其他命令会产生什么具体错误?要复制到字符串变量中,请参阅我的更新答案。
$ cat file
foo_bar
<a name="menu_portlet_testbar">
$ foo=$(sed -rn '2s/^.{19}(.{10}).*/\1/p' file)
$ echo $foo
et_testbar