我是UNIX的新手,正在浏览一个脚本文件,并且是一个代码片段。
我试着分析一下这个片段。我读了一下'sed - stream editor'
命令和sed -e
选项。
我还执行了代码片段,然后才能看到输出。但我无法理解最新情况。以下是摘录。
ID=101
echo ABCDEFGHIJK KLMJN | \
sed -e "1,\$s/ *$/^\"`echo $ID`\"/" \
>a.txt
输出为ABCDEFGHIJK KLMJN^"101"
脚本文件中有很多地方使用sed
命令。有人可以帮我解释这些片段吗?
答案 0 :(得分:3)
你应该逐个看一下:
sed -e "1,\$s/ *$/^\"`echo $ID`\"/"
| | | |
1 2 3
您只想处理特定的行。对于该示例,从第一行开始,以最后一行结束。在这种情况下,不需要以这种方式编写它。所以
sed -e "s/ *$/^\"$(echo $ID)\"/"
完全相同。
这是替换命令。在这种情况下,您将在最后一个非空格和行结尾之间替换零个或多个空格。如果您想了解更多相关信息,我建议使用Google搜索regex
。
反引号(``
)实际上是一种“反对派”。它会导致shell在替换之前执行命令。为了更易读,您应该使用$(echo $ID)
。之后,将2.正则表达式替换为2.结果为^"101"
。
之后结果为ABCDEFGHIJK KLMJN^"101"