将grep命令缩短为80个字符Bash
我正在写一个Bash脚本,并且有一些非常长的grep命令,我想将它们缩短到80个字符,以获得更好的风格。这是一个我正在与之合作的项目将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个字符。到目前为止,我已经尝试了一些方法,但我总是出错。我尝试了以
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'
。