我是shell脚本的新手,我在给定的脚本中找到了以下代码行。
有人可以用一个例子向我解释下面的代码行是什么意思
Path=`echo $line | awk -F '|' '{print $1}'`
答案 0 :(得分:0)
echo $line
将打印变量$line
的值,|
符号表示将其输出(或)传递给另一个程序/命令/脚本。我不会在这里解释piped,但上面做的是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
答案 1 :(得分:0)
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
答案 2 :(得分:0)
我认为这只是一种复杂的表达方式
echo ${line%%|*}
即。写入stdout变量line
内容的一部分,该变量上升到 - 但不包括 - 第一个垂直条。
答案 3 :(得分:0)
Path=`echo $line | awk -F '|' '{print $1}'`
^ ^ ^ ^
| | | |
| | | print 1st column
| | |
| | input field separator
| |
| echo variable line
|
variable Path
-F'|'
- 默认情况下,awk按单个空格将记录/行/行拆分为列,但使用|
,awk按管道拆分上面的一个可以写成
Path=$( awk -F '|' '{ print $1 }' <<< "$line" )
假设说
$ line="1|2|3"
$ Path=$( awk -F '|' '{ print $1 }' <<< "$line" )
$ echo $Path; # you get first column
1
与
相同$ Path=$( cut -d'|' -f1 <<< "$line" )
$ echo $Path;
1
答案 4 :(得分:-1)
默认字段分隔符为'',如果您有-F,则表示将默认分隔符更改为'|'