簡體   English   中英

使用 shell 腳本讀取行並刪除換行符

[英]read line and remove newline character using shell script

我有基於文本文件中的值生成 sql 查詢的 shell 腳本。 我的文本文件的值如下(逐行)在此處輸入圖像描述

我的shell腳本是這樣的。

#!/bin/sh
NAME="tableNames.txt"
COLUMNA="ca"
COLUMNB="cb"
cat $NAME | while read LINE

do
echo "CREATE TABLE \"$LINE\" (
        forward_speed double precision,
    backward_speed double precision
      );"
done

LINE 變量正確地從文本文件中獲取值,但它有換行符我如何刪除換行符。

您可能在 Windows 機器或其他帶有 dos 行結尾的設置上生成了文本文件。 您可以通過以下任一方式解決此問題

  • 使用 dos2unix 將文件轉換為 unix 行尾
  • 刪除 '\r' 字符: cat $FILE | tr -d '\r' | while read LINE ... cat $FILE | tr -d '\r' | while read LINE ...
  • 使用 awk 之類的實用程序來獲取第一個字段: cat $FILE | awk '{print $1}' | while read LINE ... cat $FILE | awk '{print $1}' | while read LINE ...

如果tabeNames.txt來自 Windows,你應該做一個dos2unix過濾器。

我在處理 Fedora 上 Busybox docker 容器的輸出時遇到了這個問題。

我正在使用 docker run 的輸出進行進一步處理,但無法讓它工作多個小時。

我通過管道輸出到文件解決了我的問題

...
res=$(docker run -it ....)
echo $res > tmp.txt
dos2unix tmp.txt
cat tmp.txt | while read line;
do
...

希望這可以幫助其他人解決容器輸出的類似問題

暫無
暫無

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

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