Как найти метку времени в файле, а затем эхо-адрес в содержимое файла в качестве первой строки?

Я занимался этим около двух недель, прежде чем я понял, как переключиться в классический режим. Кажется, Ubuntu по-разному выглядит на компьютерах некоторых людей. Во-первых, у меня не было выхода из системы. Для выхода нажмите Alt + F2. Затем вставьте следующее в текстовое поле и нажмите enter:

gnome-session-save --force-logout

Как только на экране входа в систему. Если ваш компьютер похож на мой, все еще нет настольных параметров, которые можно увидеть где угодно. В этот момент нажмите «Ввод» два раза, а параметры рабочего стола будут отображаться в нижней части экрана. Выберите тот, который вы хотите (например, классика похожа на Ubuntu 10.10 по умолчанию), а затем снова зайдите.

1
задан 3 August 2016 в 23:56

2 ответа

Так:

( stat -c %y test_file.txt | awk -F '.' '{print $1}' ; cat test_file.txt  ) > /tmp/temp_file && mv /tmp/temp_file test_file.txt

Вот небольшая демонстрация:

$> echo "Hello World" > test_file.txt
$> ( stat -c %y test_file.txt | awk -F '.' '{print $1}' ; cat test_file.txt  ) > /tmp/temp_file &&                       
> mv /tmp/temp_file test_file.txt
$> cat test_file.txt                                                                                                     
2016-08-03 09:24:27
Hello World

Объяснение:

Мы получаем временную метку и содержимое файла в подоболочке, обозначаем в скобках (...) stat -c %y test_file.txt | awk -F '.' '{print $1}' timpedamp трипса cat test_file.txt читает содержимое файла. Полученный текст - это метка времени и все, что было в файле, перенаправляется на /tmp/temp_file. Наконец, мы заменяем исходный файл содержимым /tmp/temp_file
5
ответ дан 23 May 2018 в 07:30
  • 1
    Большое спасибо за этот полезный пост. Я принял другой ответ только потому, что он немного более краток. – Happydevdays 3 August 2016 в 20:06

Как насчет использования ed вместо sed?

$ ed -s test.txt << EOF
0r !stat -c \%y %
1 s/\.[0-9]*//
w
q
EOF

Это говорит:

считывает вывод команды stat -c \%y % и вставляет его в положение 0 в буфер, т.е. перед первой строкой. Обратите внимание, что в ed неэкранный % является сокращением для текущего файла. на этой (сейчас первой) строке вместо нуля заменить вместо десятичного периода и после цифр записать результат обратно в файл и выйти

-s не является обязательным - он просто предотвращает вывод ed количество строк. Если stat добавляет смещение часового пояса в вашем регионе / часовом поясе, и вы также хотите его удалить, вы можете изменить команду s, чтобы удалить период и все последующие за ним, например. s/\..*//

Также можно использовать ed в однострочном режиме, выполняя свои команды со стандартного ввода с использованием echo или printf, хотя немного сложно получить право экранирования: [ ! d8]

printf '0r !stat -c \%%y %%\n1 s/\.[0-9]*//\nw\nq' | ed -s test.txt
4
ответ дан 23 May 2018 в 07:30

Другие вопросы по тегам:

Похожие вопросы: