Anda dapat menyingkirkan $((...)); yang offdan lenbagian dari ${var:off:len}substitusi sudah dievaluasi sebagai ekspresi aritmatika. Contoh: foo=01234567; echo "${foo:0:${#foo}/2} ${foo:${#foo}/2}". Itu didokumentasikan, dan itu sama di zshdan ksh93seperti di bash.
Mosvy
3
Catatan: Jika panjang string aneh, ini masih akan membaginya menjadi dua bagian, tetapi yang kedua akan menjadi karakter yang lebih panjang.
peterh
8
Menggunakan split, di sini string dan substitusi perintah:
Perhatikan bahwa itu tidak bekerja dengan mawk atau busybox awk karena ambiguitas sintaksis dari divisi /dan /ERE/operator, dan kasus khusus ()sebagai opsional untuk length(masih implementasi yang tidak sesuai dengan POSIX dalam kasus itu). Menggunakan length()atau di length($0)sini bukannya lengthakan membantu mereka. Anda juga bisa melakukan awk 'BEGIN{half = int(length(ARGV[1]) / 2); print substr(ARGV[1], 1, half) ORS substr(ARGV[1], half+1)}' abcdefyang akan menyimpan pipa dan proses tambahan dan membuatnya berfungsi bahkan jika string tersebut mengandung karakter baris baru.
Stéphane Chazelas
1
Python 3
s = input()# Take one line of input from stdin.
x = len(s)//2# Get middle of string. "//" is floor division
print(s[:x], s[x:], sep="\n")# Print "s" up to "x", then "s" past "x", joined on newlines.
Jawaban:
Menggunakan ekspansi parameter dan aritmatika shell :
Paruh pertama dari variabel tersebut adalah:
Paruh kedua variabel adalah:
jadi kamu bisa menggunakan:
Anda juga bisa menggunakan perintah awk berikut:
sumber
$((...))
; yangoff
danlen
bagian dari${var:off:len}
substitusi sudah dievaluasi sebagai ekspresi aritmatika. Contoh:foo=01234567; echo "${foo:0:${#foo}/2} ${foo:${#foo}/2}"
. Itu didokumentasikan, dan itu sama dizsh
danksh93
seperti di bash.Menggunakan
split
, di sini string dan substitusi perintah:sumber
awk
Skrip lain dapat berupa:sumber
/
dan/ERE/
operator, dan kasus khusus()
sebagai opsional untuklength
(masih implementasi yang tidak sesuai dengan POSIX dalam kasus itu). Menggunakanlength()
atau dilength($0)
sini bukannyalength
akan membantu mereka. Anda juga bisa melakukanawk 'BEGIN{half = int(length(ARGV[1]) / 2); print substr(ARGV[1], 1, half) ORS substr(ARGV[1], half+1)}' abcdef
yang akan menyimpan pipa dan proses tambahan dan membuatnya berfungsi bahkan jika string tersebut mengandung karakter baris baru.Python 3
Sebagai contoh,
Jika panjang string bukan angka genap, baris kedua akan lebih panjang. Misalnya
sumber