awk和bash var /命令交互

时间:2015-03-15 18:02:20

标签: bash csv awk ls

我想用最简单的方法创建一个带有bash脚本的csv文件,该脚本接收两个参数:$ var1它是要列出的文件夹,$ var2是一个简单的alfanumeric字符串模式来匹配。

当前版本选择正确的文件并编写一个精美的csv文件,但是我想添加一个到每个文件名的路径(路径存储在var1中),还要写一个"可执行文件"是/现在使用ls -F标签选项字段。

  ls -lF "$var1"/*"$var2"* | awk {'print $9";$5";"$2";"$1'} 

使用var1='.'; var2='sh'

./2.sh*;1283;1;-rwxr--r--
./2.sh~*;1285;1;-rwxr--r--
./3.sh*;913;1;-rwxr--r--
./3.sh~*;849;1;-rwxr--r--
./4.sh*;411;1;-rwxr--r--
./4.sh~*;411;1;-rwxr--r--
./5.sh*;413;1;-rwxr--r--
./5.sh~*;386;1;-rwxr--r--

这与我需要的相似。 如果我在bash目录中,我想要这个输出

bash/2.sh;1283;1;-rwxr--r--;Yes
bash/2.sh~;1285;1;-rwxr--r--;Yes
bash/3.sh;913;1;-rwxr--r--;Yes
bash/3.sh~;849;1;-rwxr--r--;Yes
bash/4.sh;411;1;-rwxr--r--;Yes
bash/4.sh~;411;1;-rwxr--r--;Yes
bash/5.sh;413;1;-rwxr--r--;Yes
bash/5.sh~;386;1;-rwxr--r--;Yes

1 个答案:

答案 0 :(得分:1)

最后我使用sed替换ls输出,添加了一个yes字段,其中-F附加了' *'是。因此,我可以使用awk轻松打印该字段。我生成并将相对路径存储到_dir变量中,并使用简单的引号将其包含在awk print中。

sed 's/\*$/\ Yes/' awk {'print "'$_dir/'"$9";"$5";"$2";"$1";"$10'}

仍然不是"最简单的方式"。但是我到了那里。 我会尝试使用统计数据,这看起来非常有用。

尝试使用递归将模式作为参数传递给函数时出错,但这是一个不同问题的主题。