如何将awk用于2列并将其作为一个元素保存到变量中?

时间:2018-03-14 11:26:32

标签: awk grep

我有一个看起来像这样的文件

if( $('.clienttable').length > 0 ) {
    $('.clienttable').DataTable( {           
        pageLength: 10,
        select: true,
        responsive: true,
        dom: '<"html5buttons"B>lTfgitp',
        buttons: [
            {
                extend: 'copyHtml5',
                exportOptions: {
                    columns: [1,2,3,4,5,6],
                    modifier: {
                        selected: true
                    }
                }
            },
            {
                extend: 'csvHtml5',
                exportOptions: {
                    columns: [1,2,3,4,5,6],
                    modifier: {
                        selected: true
                    }
                }
            },
            {
                extend: 'excelHtml5',
                exportOptions: {
                    columns: [1,2,3,4,5,6],
                    modifier: {
                        selected: true
                    }
                }
            },
            {
                extend: 'pdfHtml5',
                exportOptions: {
                    columns: [1,2,3,4,5,6],
                    modifier: {
                        selected: true
                    }
                },
                title: 'List of Clients',
            }
        ],
        columnDefs: [
            { targets: [0], orderable: false },
            { targets: [7], orderable: false }
         ],
        "order": [[ 6, "desc" ]]  
    });
}

我希望提取3.和4.列中的日期和时间并将其保存到变量中。 (dir_path是目录的名称,source_file是我上面描述的文件)

.../proj_1/file1.txt 8 2018-03-14 07:46:01
.../proj_1/file3.txt 3 2018-03-14 07:47:01
.../proj_1/file2.txt 10 2018-03-14 07:45:01
.../file1.txt 2 2018-03-14 07:50:01

我想要的输出是

variable=$(grep "$dir_path/.*" source_file | grep -v "$dir_path/.*/" | awk '/[0-9]/{print ($3 $4)}')

但是使用此代码,输出看起来像这样

2018-03-14 07:46:00
2018-03-14 07:47:00
2018-03-14 07:45:01

如何在日期和时间之间放置空格?它甚至可能吗?如果我在awk表达式中有空格,则时间和日期会保存在单独的元素中,这不是我想要的。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

以下情况如何?

awk '/[0-9]/{print ($3" "$4)}'

适合我:

awk '/[0-9]/{print ($3" "$4)}' file1.txt

2018-03-14 07:46:01
2018-03-14 07:47:01
2018-03-14 07:45:01
2018-03-14 07:50:01

有用的链接:StackOverflow case: AWK to print field $2 first, then field $1