我是shell脚本的新手,我在一个给定的脚本中发现了以下几行代码。
有没有人能举例说明一下下面这行代码是什么意思?
Path=`echo $line | awk -F '|' '{print $1}'`发布于 2017-11-16 18:49:49
echo $line将打印变量$line的值,|符号表示该变量的输出将被传递(或piped到另一个程序/命令/脚本。我不打算在这里解释awk,但上面所做的是获取echo $line的输出并使用它进行处理。
根据awk手册页,选项-FS意味着
-F fs使用fs作为输入字段分隔符
因此,它后面的字符串将用于将给awk的输入字符串拆分为不同的字段。例如,变量$line的值为a|b,它将被分成两个字段a和b。如何处理它是在'{}'表达式中指定的。同样,在这里可以做的是无限的,这里唯一要做的就是打印第一个可以用$1访问的字段,或者上面例子中的a (可以猜到$2是b )。
最后,整个操作的输出存储在变量Path中。
总结一下:
line="a|b"
echo $line | awk -F '|' '{print $1}'
> a
Path=`echo $line | awk -F '|' '{print $1}'`
echo $Path
> a发布于 2017-11-16 18:52:02
echo $line | awk -F '|' '{print $1}'解释:
echo -> display a line of text
$line -> parameter expansion read the line
| -> A  pipeline is a sequence of one or more commands separated by one of the control operators |
awk -> Invoke awk program
-F '|' -> Field separator as | for the data feed
'{print $1}' -> Print the first field示例
echo 'a|b|c' | awk -F '|' '{print $1}'将打印a
发布于 2017-11-16 19:24:44
我认为这只是一种复杂的表达方式
 echo ${line%%|*}例如,将变量line的内容的一部分写入标准输出,该部分内容直到(但不包括)第一个竖线。
https://stackoverflow.com/questions/47327159
复制相似问题