Tôi có một tập tin với các nội dung sau:
(((jfojfojeojfow
//
hellow_rld
(((jfojfojeojfow
//
hellow_rld
Làm cách nào tôi có thể trích xuất mọi dòng bắt đầu bằng dấu ngoặc đơn?
Tôi có một tập tin với các nội dung sau:
(((jfojfojeojfow
//
hellow_rld
(((jfojfojeojfow
//
hellow_rld
Làm cách nào tôi có thể trích xuất mọi dòng bắt đầu bằng dấu ngoặc đơn?
Câu trả lời:
Đây là một bash
lót:
while IFS= read -r line; do [[ $line =~ ^\( ]] && echo "$line"; done <file.txt
Ở đây chúng tôi đang đọc từng dòng đầu vào và nếu dòng bắt đầu bằng (
, dòng được in. Các thử nghiệm chính được thực hiện bởi [[ $i =~ ^\( ]]
.
Sử dụng python
:
#!/usr/bin/env python2
with open('file.txt') as f:
for line in f:
if line.startswith('('):
print line.rstrip()
Ở đây line.startswith('(')
kiểm tra nếu dòng bắt đầu bằng (
, nếu vậy thì dòng được in.
awk '/^\(/' testfile.txt
Kết quả
$ awk '/^\(/' testfile.txt
(((jfojfojeojfow
(((jfojfojeojfow
Như python one-liner:
$ python -c 'import sys;print "\n".join([x.strip() for x in sys.stdin.readlines() if x.startswith("(")])' < input.txt
(((jfojfojeojfow
(((jfojfojeojfow
Hay cách khác:
$ python -c 'import sys,re;[sys.stdout.write(x) for x in open(sys.argv[1]) if re.search("^\(",x)]' input.txt
look
là một trong những tiện ích Unix cổ điển nhưng ít được biết đến, xuất hiện trở lại trong phiên bản Unix của AT & T 7. Từ man look
:
Tiện ích look hiển thị bất kỳ dòng nào trong tệp có chứa chuỗi làm tiền tố
Kết quả:
$ look "(" input.txt
(((jfojfojeojfow
(((jfojfojeojfow
Bạn có thể làm ngược lại.
grep -v '^[^(]' file
hoặc là
sed '/^[^(]/d' file
Sử dụng lệnh grep cho việc này. Giả sử tệp có nội dung được đề cập được gọi là t.txt:
user:~$ grep '^(' t.txt
(((jfojfojeojfow
(((jfojfojeojfow
Với '--color' là đối số xa hơn, bạn thậm chí có thể nhìn thấy màu trong thiết bị đầu cuối phù hợp. Hướng dẫn này cũng không phù hợp với dòng trống.
(
, không chỉ những dòng bắt đầu bằng một.