簡體   English   中英

使用awk或bash中的sed編輯文本

[英]Editing text using awk or sed in bash

我的file.txt的內容是這樣的:

fghfg
sdfsd
thrt
wefs
dfd
htyj
dfd
gsedf
     1     sdfsdf
     3     sdfghj
     f     fgdfhtyu
dfdsfsd
sdgdfg
sdfzcxzc
fgjty

我要更改此部分:

1     sdfsdf
3     sdfghj
f     fgdfhtyu

為此:(刪除第一列和空格)

sdfsdf
sdfghj
fgdfhtyu

然后將file.txt的整個輸出重定向到file2.txt

這怎么可能...?

謝謝

嘗試將腳本更改為此:

find "$1" -print |
while IFS= read -r line; do
    awk '!a[$0]++{print $NF}' "$line" > /tmp/file.txt
done

有什么需要改變的嗎?

使用sed ,您可以執行以下操作

sed 's/^ \+[^ ] \+//' file1.txt > file2.txt

它將刪除行開頭的所有序列,這些序列包含一系列空格,后跟一個非空格字符,而不是一系列空格。 使用問題中的文件,結果為:

fghfg
sdfsd
thrt
wefs
dfd
htyj
dfd
gsedf
sdfsdf
sdfghj
fgdfhtyu
dfdsfsd
sdgdfg
sdfzcxzc
fgjty

應該這樣做:

awk '{print $NF}' file.txt > file2.txt

或一天中最短的解決方案:

awk '{$0=$NF}1' file.txt > file2.txt
cat file2.txt
fghfg
sdfsd
thrt
wefs
dfd
htyj
dfd
gsedf
sdfsdf
sdfghj
fgdfhtyu
dfdsfsd
sdgdfg
sdfzcxzc
fgjty

只需打印最后一列。

另一個簡單的sed命令,

sed 's/.* \(.*\)/\1/g' file1.txt > file2.txt

暫無
暫無

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

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