2015-03-23 2 views
0

Я пытаюсь удалить новый символ строки для функции даты и включить ее в пробелы. Я спасаю переменные с помощью этого:Удалить символ новой строки в awk

current_date=$(date "+%m/%d/ AT %y%H:%M:%S") 

Я могу видеть, что это правильный формат мне нужно, делая эхо $ CURRENT_DATE. Однако, когда мне нужно использовать эту переменную, она не действует так, как мне бы хотелось.

awk '(++n==47) {print "1\nstring \nblah '$current_date' blah 2;  n=0} (/blah/) {n=0} {print}' input file > output file 

Мне нужна дата, чтобы оставаться в текущей строке текста и продолжать без новой строки, если не указано.

Заранее спасибо.

+0

Используйте 'echo '$ current_date' ', а не' echo $ current_date', чтобы увидеть фактическое значение '$ current_date'. Также неверно, как вы пытаетесь использовать переменную оболочки внутри awk-скрипта. Поместите некоторый ввод проб и ожидаемый результат, чтобы мы могли вам помочь. –

ответ

3

Вместо того, чтобы вставить переменную в командной строке, как вы делаете, вы можете передать его в AWK, как это:

awk -v date="$(date "+%m/%d/ AT %y%H:%M:%S")" '# your awk one-liner here' input_file 

Вы можете использовать переменную date как переменную AWK в скрипте :

print "1\nstring \nblah " date " blah 2"; 

Как и в сторону, это выглядит как оригинал print заявление было нарушено, так как были двойные кавычки, отсутствующие в конце.

Смежные вопросы