簡體   English   中英

Bash腳本-Bash腳本-編輯文件中文本的行

[英]Bash Script- Bash Script - Editing Lines on Text From File

我正在使用bash腳本從文本文件中讀取數據。

數據:

04:31 Alex M.O.R.P.H. & Natalie Gioia - My Heaven http://goo.gl/rMOa2q 
[ARMADA MUSIC]

07:46 Fabio XB & Liuck feat. Christina Novelli - Back To You (Wach Remix)http://goo.gl  /yGxqRX 
[DIGITAL SOCIETY RECORDINGS]

碼:

#!/bin/bash


file="/home/nexusfactor/Desktop/inputData(linux).txt"
while IFS= read -r line
do
       # display $line or do somthing with $line
       echo "$line"
done <"$file"

我想刪除兩首歌曲之間的空白,然后刪除歌曲開頭的時間和文件末尾的超鏈接/工作室名稱。 所以我的輸出是:

Alex M.O.R.P.H. & Natalie Gioia - My Heaven
Fabio XB & Liuck feat. Christina Novelli
echo " 04:31 Alex M.O.R.P.H. & Natalie Gioia - My Heaven http://goo.gl/rMOa2q [ARMADA MUSIC]

07:46 Fabio XB & Liuck feat. Christina Novelli - Back To You (Wach Remix) http://goo.gl/yGxqRX [DIGITAL SOCIETY RECORDINGS]" \
| sed '/^[ \t]*$/d;s/^[0-9][0-9]:[0-9][0-9] //;s/http:.*//'

產量

Alex M.O.R.P.H. & Natalie Gioia - My Heaven
Fabio XB & Liuck feat. Christina Novelli - Back To You (Wach Remix)
# ---------------------------------------^----- ???? 

並非您的示例輸出所顯示的完全正確,而是符合您的書面要求, 刪除了歌曲開頭的時間,並刪除了結尾處的超鏈接/工作室名稱...

而不是在while循環中讀取每一行,而是使用sed內置的功能來讀取文件的每一行並對其進行處理。 你可以做

sed '/^[ \t]*$/d;s/^[0-9][0-9]:[0-9][0-9] //;s/http:.*//' file > newFile && /bin/mv newFile file

或者,如果您使用的是現代linux環境(和其他環境),請使用-i選項覆蓋現有文件:

sed -i '/^[ \t]*$/d;s/^[0-9][0-9]:[0-9][0-9] //;s/http:.*//' file

IHTH

#!/bin/bash

file="/home/nexusfactor/Desktop/inputData(linux).txt"
while read -r date line
do
  [[ $date == "" ]] && continue    # empty line -> next loop
  [[ $date =~ ^\[ ]] && continue   # line starts with "[" -> next loop
  line="${line%(*}"                # remove "(" and everything to the right of it
  line="${line%http*}"             # remove "http" and everything to the right of it
  echo "$line"
done <"$file"

輸出:

Alex M.O.R.P.H. & Natalie Gioia - My Heaven 
Fabio XB & Liuck feat. Christina Novelli - Back To You

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM