Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.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
将grep命令缩短为80个字符Bash_Bash_Grep_Newline_Ifs - Fatal编程技术网

将grep命令缩短为80个字符Bash

将grep命令缩短为80个字符Bash,bash,grep,newline,ifs,Bash,Grep,Newline,Ifs,我正在写一个Bash脚本,并且有一些非常长的grep命令,我想将它们缩短到80个字符,以获得更好的风格。这是一个我正在与之合作的项目 omR_pdisk="omreport storage pdisk controller=0"; ${omR_pdisk} vdisk="$vdisk_id" | grep ^Vendor ID | sed 's,.* : ,,g' >> "$results" 我需要把第二行压缩到80个字符。到目前为止,我已经尝试了一些方法,但我总是出错。我尝试了以

我正在写一个Bash脚本,并且有一些非常长的grep命令,我想将它们缩短到80个字符,以获得更好的风格。这是一个我正在与之合作的项目

omR_pdisk="omreport storage pdisk controller=0";
${omR_pdisk} vdisk="$vdisk_id" | grep ^Vendor ID | sed 's,.* : ,,g' >> "$results"
我需要把第二行压缩到80个字符。到目前为止,我已经尝试了一些方法,但我总是出错。我尝试了以下方法

${omR_pdisk} vdisk="$vdisk_id" | 
grep ^Vendor ID | 
sed 's,.* : ,,g' >> "$results"
我试过这个

${omR_pdisk} vdisk="$vdisk_id" \
| grep ^Vendor ID \
| sed 's,.* : ,,g' >> "$results"
我也试过了

getVendorID="grep ^Vendor ID | sed 's,.* : ,,g'"
${omR_pdisk} vdisk="$vdisk_id" | "$getVendorID" >> "$results"

这些都不起作用。非常感谢您提供的任何帮助

您可以用反斜杠打断命令行,但必须先插入一些表示继续的运算符。例如,这应该起作用:

${omR_pdisk} vdisk="$vdisk_id" | \
    grep ^Vendor ID | \
    sed 's,.* : ,,g' >> "$results"

(至少是语法。不知道代码实际做了什么。)

命令不能以
|
结尾,因此当行以一结尾时,行继续是自动的。也就是说,反斜杠是不必要的。对于当前版本的bash(仅在4.2中复制)也是如此,但我可以发誓,情况并非总是如此。不幸的是,它无法复制。据我所知,它是由POSIX指定的(或者至少,它在
dash
中也可以工作);以
|
结尾的行将自动继续。第二行也应该继续,因为它与第一行相同,只是有显式的行继续。第三个失败,因为引用的
$getVendorID
值被视为一个命令名,而不是要执行的shell代码片段。另外,请注意,对
grep
的调用是不必要的:
。|sed'/^Vendor ID/s,.*:,.g'