Saya baru dalam pemrograman !!
Adakah yang bisa membantu menghapus :
pada posisi pertama dalam stempel waktu::29.06.2019 23:03:17
Saat ini saya mencoba melakukannya dengan menggunakan perintah awk / cut seperti yang ditunjukkan di bawah ini:
TDS="$(grep 'Logfile started' process.log | awk '{print $3,$4}' | cut -d: -f2)"
echo "$TDS"
29.06.2019 23
Dan hasilnya bukan yang saya inginkan! Saya ingin mencetaknya sebagai 29.06.2019 23:03:17
.
sumber
Ini
sed
solusinya:Apa yang dilakukan perintah
sed 's/^://'
adalah menggantis
karakter titik dua:
dari awal^
setiap baris dengan string kosong//
.Berikut adalah
awk
solusi rumit , tempat kami mengubah pemisah bidang menjadi^:
, yang dijelaskan di atas, dan menampilkan bidang kedua (dari setiap baris):Tugas dapat diselesaikan juga dengan
grep
( penjelasan ), mungkin ini bisa menjadi solusi tercepat untuk sejumlah besar data:Atau proses file secara langsung dengan perintah berikut, di mana batasan
^
dihapus:Hal di atas dapat dicapai juga oleh
sed
dan menangkap kelompok()->\1
:Di mana ekspresi
^.*<something>.*$
akan cocok dengan seluruh baris, yang berisi<something>
. Perintahs/old/new/
akan mengganti baris ini dengan konten dari kelompok tangkapan pertama (ekspresi dalam tanda kurung bisa lebih konkret). Opsi ini-r
memungkinkan ekspresi reguler yang diperluas. Opsi-n
akan menekan output normalsed
dan akhirnya perintahp
akan mencetak yang cocok.sumber
awk
bisa memiliki multi karakter FS dengan karakter dengan makna khusus! Hal yang saya pelajari hari ini.Karena Anda sudah memproses ini
awk
, Anda dapat melakukan semuanya secara langsung:The
sub
Format umum perintah adalahsub(/REGEX/, REPLACEMENT, TARGET)
dan akan mengganti semua pertandingan untuk ekspresi regulerREGEX
dengan stringREPLACEMENT
dalam string masukanTARGET
. Di sini, kami mengganti yang pertama:
(^
berarti "awal") dari bidang ke-3 ($3
) tanpa apa-apa.Tentu saja, jika Anda melakukannya dengan awk, Anda bisa melakukan semuanya dengan awk dan menyelesaikan semuanya dalam satu operasi:
Atau, dalam kasus Anda:
sumber
Solusi bash lain:
xargs
mengkonversistdin
(input standar) ke parameter posisi untukbash
perintah.echo
dengantail -n1 /path/to/reportfile.txt
.sumber