BASH-将文件的特定部分复制到字符串中
我有一个文本文件,叫它Jy.dat 我想通过bash脚本选择第7行的20到29个字符,并将它们复制到字符串变量中。 我尝试过sed,但没有成功 你能帮忙吗 感谢您的建议。您可以使用awk: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行 然
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